最近觉得自己以前写的javascript都是些函数式的编程,复用性很差,于是想开始学习Javascript的面向对象编程。在网上找了一本Object-Oriented JavaScript来开始学习。在学习过程中,顺便把学习笔记写到博客中分享出来。
在这一篇文章中,会把javascript中的基本数据类型和数组的东西分享出来。
在文章的最开始,我需要把我自己的环境给大家介绍一下。
首先,我测试代码时所使用的浏览器是firefox。并在上面安装firebug插件。安装以后,可以在firebug的console上面写javascript并可以立即运行。
然后,在地址栏中输入about:config
,打开以后找到javascript.options.strict
并把它设为true
,这样,在使用一个没有定义的变量时,Firefox的JavaScript engine就会在控制台上生成一条警告信息。这样,环境就配置好了。
下面,我们回到正题。
变量
变量可以定义为字母、数字、下划线的组合,但是不能以数字开头。如:
var thisIsAVariable; // 合法
var _and_this_too; // 合法
var mix12three; // 合法
var 2three4five; // 非法
多个变量可以定义在一个var后面,如:var v1, v2, v3 = 'hello', v4 = 4, v5;
变量名是区分大小写的,比如:
var case_matters = 'lower';
var CASE_MATTERS = 'upper';
这是两个不同的变量。
数据类型
JavaScript中,一共有5种基本数据类型,他们分别是:
-
Boolean--布尔值,有效值为true和false。
-
Undefined--当你想访问一个没有定义的变量时,你会得到一个特殊的值undefined,同样的,当你访问一个声明了的,但是没有初始化的变量时,JavaScript会将变量初始化为undefined。
-
Null--表示什么也没有,空的。和undefined不同的是,如果一个变量被赋值为null,他仍然是defined,只不过他的值是空的。
除以上5种基本数据类型的数据是object。
使用typeof获得数据类型
如何你想知道一个变量或者值的数据类型,你可以使用typeof操作符来获得一个string类型的 “number”, “string”, “boolean”, “undefined”, “object”, or “function”中的其中一个。比如:
var v1 = 1;
typeof v1; //得到"number"
typeof typeof v1; //得到"string" 说明typeof返回的是一个string
数字
整数和小数
最简单的数据就是整数和小数了.
var num1 = 100;
typeof num1; // "number"
num1; // 100
var num2 = 0.73;
typeof num2; // "number"
num2; //0.73
八进制和十六进制数
var octal = 070;
octal; //56
var hex = 0xffff;
hex; //65535
字面值
JavaScript
还可以定义一下字面值,比如:
var literal = 1e1; // e用大小写都可以,表示1*101
leteral; // 10
literal = 2e+3 // 表示2*103
literal; // 2000
literal = 2E-3 // 表示2*10-3
literal; //0.002
Infinity
JavaScript中有一个特殊的数字叫Infinity,它表示一个很大的,JavaScript无法处理的数字。Infinity的类型仍然是一个数字,如果你用typeof来看它的数据类型,将会返回”number”。在JavaScript中,能够处理的最大数字为1.7976931348623157e+308,最小的数字为5e-324。下面,我们可以做一下实验。
var infinity = Infinity;
infinity; // Infinity
typeof infinity; // "number"
可以看出,Infinity也是属于数字
var infinity = 1e308;
infinity; // 1e+308
infinity = 1e309;
infinity; // Infinity
infinity = 6 / 0;
infinity; // 当除数为0的时候,一样会输出Infinity
infinity = -Infinity;
infinity; // -Infinity
那么是否可以用两个
Infinity
相减得到
0
呢?下面我们来试一下
:
Infinity - Infinity // NaN
-Infinity + Infinity // NaN
我们可以看出,计算后,得到NaN,并不是0。但是其他的一些运算,最后的结果将会得到Infinity。
Infinity - 20; // Infinity
-Infinity * 3; // -Infinity
Infinity / 2; // Infinity
Infinity - 99999999999999999; // Infinity
Infinity - 1e309; // NaN
NaN
NaN到底是什么呢,其实他来自于“Not A Number”。
typeof NaN; // "number"
由此可以看出,它也是number中的一个特殊值。
var a = NaN;
a; // NaN
当你在执行一个数学运算的时候,如果运算失败,那么你将获得一个NaN。比如你想用10乘以“f”,这样显然是一个不合法的乘法运算。
10 * "f"; // NaN
同样,如果在你的运算中,含有一个NaN,那么你得到的也将会是NaN。
1 + 2 + NaN; // NaN
String
String的转换
在String中,“+”用来连接两个字符或字符串。但是其他运算符则可以对String进行转换。
var s1 = "one";
var s2 = "two";
var s = s1 + s2;
s; // "onetwo"
typeof s; // "string"
var s = '1';
s = 3 * s; // 3
typeof s; // "number"
var s = '1';
s++; // 1
typeof s; // "number"
可见,’1’被自动转换为number了。同样的,如果用String做运算时,运算失败,同样会返回一个NaN。
var d = '101 dalmatians';
d * 1; // NaN
另外,String也可以是Unicode码。
"\u0421\u0442\u043E\u044F\u043D"; // "Стоян"
逻辑操作符
如果在一个非布尔值上使用逻辑操作符,那么这个值会自动转成boolean
.
var b = "one";
!b; // false
可见,”one”被自动转成了true。
但是下面5个特殊的值将会被转成false。除此之外的值,将会被转换为true。
他们是:空字符串””,null,0,undefined,NaN。
var b = "";
!b; // true
var b = "0";
!b; // false
var b = 0;
!b; // true
var b = null;
!b; // true
var b = "false";
!b; // false
var b = "NaN";
!b; // false
var b = NaN;
!b; // true
值得一提的是,当遇到和非boolean值进行逻辑运算的时候,这个非boolean值将会作为结果返回。比如:
true || "aaa"; // true
true && "aaa"; // "aaa"
考虑代码的可读性,这样的代码应该尽量避免。
比较
另外还有几种操作符运算以后会返回boolean的。==,===,!=,!==,>,>=,<,<=。
下面针对==,===,!=,!==来解释一下。
==,!=用于判断两个值是否相等或不等,对于不同类型的值比较时,将会被转换为相同类型的,再进行比较。比如:
1 == '1'; // true
===,!==用于判断两个值是否相等或不等,并且还要比较数据的类型是否相同或不同,对于不同类型的值比较时,类型不会被转换,直接返回false。比如:
1 === '1'; // false
另外,比较特殊的是NaN,他不等于任何的值,包括他自己。
NaN == NaN; // false
undefined和null
当你使用一个未定义或者定义了但是没有被初始化的值时,你将会得到undefined。javascript在定义变量时,默认给变量初始化为undefined。
foo; // ReferenceError: foo is not defined
typeof foo; // "undefined"
不同的是,如果是使用一个定义了,但是没有被初始化的变量。你讲不会得到错误信息。
var foo;
foo; // undefined
typeof foo; // "undefined"
另一方面,对于null。它不会被javascript在后台赋予某个变量,只能是靠我们的代码赋值。
var foo = null;
foo; // null
typeof foo; // "object"
还有, 用==比较时,undefined和null是相等的。
undefined == null; // true
undefined === null; // false
虽然null和undefined的区别并不太大,但是在某些时候确实是很重要的。比如在数学运算中,会得到不同的结果。
1+undefined; // NaN
1+null; // 1
这是由于null和undefined转换的基本数据类型不同造成的。
数组
对于数组的一些基础知识就不在此多说了。
值得注意的是在删除数组元素时,并不会真的删除掉这个元素,而是把元素值设为undefined。删除之后,数组的长度不变。
var array = [1,2,3];
array; // [1, 2, 3]
delete array[2]; // true
array; // [1, 2, undefined]
array.length; // 3
另外,你也可以使用数组来访问string中的当个字符。
var str = "abcd";
str[1]; // "b"
总结:
在本文中介绍的都是一些比较基础的知识,在下一次的文章中,我会把函数部分的知识分享出来。由于平时工作比较忙,我也是自己抽时间来学习的。有什么不足之处,还望高手们提醒。谢谢。
未完,待续。。。
分享到:
相关推荐
面向对象的JavaScript编程是JavaScript开发中的重要概念,它允许我们以类和对象的...以上就是对"面向对象javascript笔记"所涵盖知识点的详细解析。理解并掌握这些概念对于深入理解和高效地编写JavaScript代码至关重要。
- 变量和数据类型:JavaScript支持基本数据类型(如字符串、数字、布尔值)以及引用类型(如对象和数组)。 - 函数:JavaScript中的函数是第一类公民,可以作为变量赋值、作为参数传递或作为返回值。 2. **...
总结,JavaScript从基础到高级,再到面向对象的深入学习,对于任何参与Web建设的IT人员来说都是至关重要的。理解并熟练运用这些知识点,能够帮助开发者编写出更高效、更健壮的代码,以应对复杂的Web开发需求。
变量是存储数据的地方,JavaScript支持基本数据类型(如字符串、数字、布尔值)以及复杂数据类型(如对象和数组)。控制流程语句如条件语句(if...else)、循环(for, while)用于决定代码执行的顺序。函数是一段可...
- 数据类型:包括基本类型(如字符串、数字、布尔值、null和undefined)和引用类型(如对象和数组)。 - 运算符:包括算术运算符、比较运算符、逻辑运算符等,用于执行计算和比较操作。 - 控制流:如条件语句(if...
它支持面向对象的编程范式,对象和数组是实现这一范式的关键组件。面向对象编程(OOP)提供了封装、聚集、继承和多态的概念,使得代码更加模块化,易于维护和扩展。 封装是指将数据(属性)和行为(方法)封装到...
数据类型包括基本类型(如字符串、数字、布尔值、null和undefined)和引用类型(如对象和数组)。在处理数据时,我们常会用到算术、比较和逻辑操作符,以及用于对象和数组操作的赋值、解构赋值等。 在“JS练习代码...
它支持基本数据类型如数字(Number)、字符串(String)、布尔值(Boolean)、空值(null)和未定义值(undefined),以及复合数据类型如对象(Object)和数组(Array)。 #### 函数 函数是JavaScript中最核心的概念之一,它们...
总的来说,JavaScript是网页动态效果的核心,理解和掌握其语法、数据类型、面向对象编程、DOM操作以及事件处理等知识,是成为一名合格Web开发者的基础。通过不断实践和学习,可以利用JavaScript创建出各种复杂的网页...
4. **第4章 JavaScript基于对象编程**:JavaScript是一门面向对象的语言,这一章会讲解对象的概念、创建对象的方法(如字面量语法和构造函数)、原型链、继承以及封装和多态等面向对象特性。 5. **第5章 文档对象...
书中详细解释了基本数据类型(如字符串、数字、布尔值)和复杂数据类型(如对象和数组),以及如何声明和使用变量。此外,作用域规则决定了变量在代码中的可见性,了解函数作用域和块级作用域的区别是避免许多常见...
它基于ECMAScript规范,包括变量声明(var, let, const)、数据类型(如字符串、数字、布尔值、null、undefined、对象和数组)、操作符(算术、比较、逻辑、三元运算符等)以及流程控制(条件语句如if...else和...
变量可以是任何数据类型,包括字符串、数字、布尔值、null、undefined、对象和数组。了解如何声明、赋值和操作这些变量是学习JavaScript的第一步。 在JavaScript中,数据类型的转换是常见的操作,比如将字符串转换...
了解基本数据类型(如字符串、数字、布尔值)和引用数据类型(如对象和数组),以及如何使用`typeof`检测数据类型,对于编写健壮的代码至关重要。 4. **函数**:函数是JavaScript中的重要组成部分,它允许我们封装...
1. 变量与数据类型:JavaScript支持基本数据类型(如字符串、数字、布尔值)和复杂数据类型(如对象和数组)。理解变量声明(var、let、const)及其作用域至关重要。 2. 运算符:包括算术运算符、比较运算符、逻辑...
1. **基础语法**:讲解变量、数据类型、运算符、流程控制(条件语句、循环)等基本概念,这是理解任何编程语言的基础。 2. **函数**:介绍函数的定义、调用以及作用域,让学习者学会如何组织代码,实现复用。 3. *...
数据类型包括基本类型(如字符串、数字、布尔值)和引用类型(如对象和数组)。 2. **操作符**:包括算术操作符(+、-、*、/、%)、比较操作符(==、===、!=、!==)和逻辑操作符(&&、||、!)等。 3. **流程控制**...