1, var , let , const
http://www.infoq.com/cn/articles/es6-in-depth-let-and-const
2, 简单数据类型,基本数据类型
Undefined, Null, Boolean, Number, String
复杂数据类型
Object
3, typeof 操作符
检测给定变量的数据类型
"undefined", "boolean", "string", "number", "object", "function"
调用 typeof null会返回"object",因为特殊值 null 被认为是一个空的对象引用。Safari 5 及之前版本、Chrome 7 及之前版本在对正则表达式调用 typeof 操作符时会返回"function",而其他浏览器在这种情况下会返回"object"
对未声明的变量执行 typeof 操作符同样会返回 undefined 值
确定一个值是哪种基本类型可以使用 typeof 操作符,而确定一个值是哪种引用类型可以使用instanceof 操作符
4, 实际上,undefined 值是派生自 null 值的,因此 ECMA-262 规定对它们的相等性测试要返回 true
5, Boolean()
虽然 Boolean 类型的字面值只有两个,但 ECMAScript 中所有类型的值都有与这两个 Boolean 值等价的值。要将一个值转换为其对应的 Boolean 值,可以调用转型函数 Boolean()
下表给出了各种数据类型及其对应的转换规则
① n/a(或 N/A),是 not applicable 的缩写,意思是“不适用”。
6, 任何操作数与 NaN 进行关系比较,结果都是 false
var result1 = NaN < 3; //false
var result2 = NaN >= 3; //false
7, 相等和全等 ==, ===
null == undefined 会返回 true,因为它们是类似的值;但 null === undefined 会返回 false,因为它们是不同类型的值
8, 无须指定函数的返回值,因为任何 ECMAScript 函数都可以在任何时候返回任何值
ECMAScript 中也没有函数签名的概念,因为其函数参数是以一个包含零或多个值的数组的形式传递的
可以向 ECMAScript 函数传递任意数量的参数,并且可以通过 arguments 对象来访问这些参数
由于不存在函数签名的特性,ECMAScript 函数不能重载
9, JavaScript 没有块级作用域
但在 JavaScript 中,if 语句中的变量声明会将变量添加到当前的执行环境中