摘要:
相等运算符用来比较相同类型的数据时,与严格相等运算符完全一样。 1 == 1.0 // 等同于 1 1.0 比较不同类型的数据时,相等运算符会先将数据进行类型转换,然后再用严格相等运算符比较。下面分成几种情况,讨论不同类型的值互相比较的规则。 (1)原始类型值 原始类型的值会转换成数值再进行比较。 阅读全文
摘要:
与全局作用域一样,函数作用域内部也会产生“变量提升”现象。var 命令声明的变量,不管在什么位置,变量声明都会被提升到函数体的头部。 function foo(x) { if (x > 100) { var tmp = x - 100; } } // 等同于 function foo(x) { va 阅读全文
摘要:
JavaScript 语言的每一个值,都属于某一种数据类型。JavaScript 的数据类型,共有六种。(ES6 又新增了 Symbol 和 BigInt 数据类型) 数值(number) 字符串(string) 布尔值(boolean):表示真伪的两个特殊值 true 和 false。 undef 阅读全文
摘要:
JavaScript 使用大括号,将多个相关的语句组合在一起,称为“区块”(block)。 对于 var 命令来说,JavaScript 的区块不构成单独的作用域(scope)。 { var a = 1; } a // 1 上面代码在区块内部,使用 var 命令声明并赋值了变量 a ,然后再区块外部 阅读全文
摘要:
标识符(identifier)指的是用来识别各种值的合法名称。 最常见的标识符就是变量名,以及后面要提到的函数名。 JavaScript 语言的标识符对大小写敏感,所以a和A是两个不同的标识符。 标识符有一套命名规则,不符合规则的就是非法标识符。 JavaScript 引擎遇到非法标识符,就会报错。 阅读全文
摘要:
JavaScript 引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)。 console.log(a); // undefined var a = 1; 上面的代码首先使用 c 阅读全文