标签:
1)基本概念
a) 语句(statement)是为了完成某种任务而进行的操作,语句以分号结尾,一个分号就表示一个语句结束。;如:var a = 1;
b) 表达式(expression),指一个为了得到返回值的计算式。如:1+3
c) 变量是对“值”的引用,使用变量等同于引用一个值。var a = 1;变量存在声明和赋值两个过程,var a = 1;等价于 var a;a = 1;
如下申明一个已存在的变量是无效的,
var x = 1;
var x;
x // 1
但是,如果第二次声明的同时还赋值了,则会覆盖掉前面的值。
var x = 1;
var x = 2;
// 等同于
var x = 1;
var x;
x = 2;
avaScript引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升。
console.log(a); var a = 1;
//等同于
var a;
console.log(a);
a = 1;
请注意,变量提升只对var
命令声明的变量有效,如果一个变量不是用var
命令声明的,就不会发生变量提升。
d) 标识符(identifier)是用来识别具体对象的一个名称。最常见的标识符就是变量名,以及后面要提到的函数名。JavaScript语言的标识符对大小写敏感,所以a
和A
是两个不同的标识符。
标识符命名规则如下:
$
)和下划线(_
)。0-9
。e) 数据类型如下(据说ES6有增加新的数据类型,这里不讨论):
true
(真)和false
(假)两个特定值f) 对象又可以分成三个子类型。
g) typeof运算符 (typeof
运算符可以返回一个值的数据类型)
typeof 123 // "number"
typeof ‘123‘ // "string"
typeof false // "boolean"
function f() {}
typeof f
// "function"
typeof undefined
// "undefined"
typeof window // "object"
typeof {} // "object"
typeof [] // "object"
typeof null // "object"
既然 typeof
对数组(array)和对象(object)的显示结果都是object
,那么怎么区分它们呢?
h)instanceof运算符(属于某个类型的实例)
var o = {}; var a = []; o instanceof Array // false a instanceof Array // true
i)null和undefinednull
与undefined
都可以表示“没有”,含义非常相似。将一个变量赋值为undefined
或null
,老实说,语法效果几乎没区别。
首先,null像在Java里一样,被当成一个对象。但是,JavaScript的数据类型分成原始类型和合成类型两大类,Brendan Eich觉得表示"无"的值最好不是对象。
其次,JavaScript的最初版本没有包括错误处理机制,发生数据类型不匹配时,往往是自动转换类型或者默默地失败。Brendan Eich觉得,如果null
自动转为0,很不容易发现错误。
因此,Brendan Eich又设计了一个undefined
。他是这样区分的:null
是一个表示"无"的对象,转为数值时为0;undefined
是一个表示"无"的原始值,转为数值时为NaN
。
标签:
原文地址:http://www.cnblogs.com/zhouqingda/p/5149786.html