1.use strict
(1)ES5 规范增加了新的语言特性并且修改了一些已经存在的特性。为了保证旧的功能还能够使用,大部分的修改是默认不生效的。
(2)需要一个特殊的指令 —— "use strict" 来明确地激活这些特性。
(3)当它处于脚本文件的顶部时,则整个脚本文件都将以“现代”模式进行工作。"use strict" 可以被放在函数体的开头。这样则可以只在该函数中启用严格模式。但通常人们会在整个脚本中启用严格模式。
(4)只有注释可以出现在 "use strict" 的上面。
(5)没有类似于 "no use strict" 这样的指令可以使程序返回默认模式。一旦进入了严格模式,就没有回头路了。
2.js 基本的数据类型有哪些?
在 JavaScript 中有 8 种基本的数据类型(译注:7 种原始类型和 1 种引用类型)。
(1)string:在 JavaScript 中,有三种包含字符串的方式。
- 双引号:
"Hello". - 单引号:
'Hello'. - 反引号:
`Hello`.
双引号和单引号都是“简单”引用,在 JavaScript 中两者几乎没有什么差别。反引号是 功能扩展 引号。它们允许我们通过将变量和表达式包装在 ${…} 中,来将它们嵌入到字符串中。
(2)number:number 类型代表整数和浮点数。数字可以有很多操作,比如,乘法 *、除法 /、加法 +、减法 - 等等。除了常规的数字,还包括所谓的“特殊数值(“special numeric values”)”也属于这种类型:Infinity、-Infinity 和 NaN。
(3)bigint:BigInt 类型是最近被添加到 JavaScript 语言中的,用于表示任意长度的整数。
(4)boolean:boolean 类型仅包含两个值:true 和 false。
(5)null:特殊的 null 值不属于上述任何一种类型。它构成了一个独立的类型,只包含 null 值:JavaScript 中的 null 仅仅是一个代表“无”、“空”或“值未知”的特殊值。
(6)undefined:undefined 的含义是 未被赋值。如果一个变量已被声明,但未被赋值,那么它的值就是 undefined:通常,使用 null 将一个“空”或者“未知”的值写入变量中,而 undefined 则保留作为未进行初始化的事物的默认初始值。
(7)symbol:symbol 类型用于创建对象的唯一标识符。
(8)object:object 类型是一个特殊的类型。其他所有的数据类型都被称为“原始类型”,因为它们的值只包含一个单独的内容(字符串、数字或者其他)。相反,object 则用于储存数据集合和更复杂的实体。
typeof 运算符:typeof 运算符返回参数的类型。
对 typeof x 的调用会以字符串的形式返回数据类型:
typeof undefined // "undefined" typeof 0 // "number" typeof 10n // "bigint" typeof true // "boolean" typeof "foo" // "string" typeof Symbol("id") // "symbol" typeof Math // "object" (1) typeof null // "object" (2) typeof alert // "function" (3)
总结
JavaScript 中有八种基本的数据类型(译注:前七种为基本数据类型,也称为原始数据类型,而 object 为复杂数据类型)。
- 七种原始数据类型:
number用于任何类型的数字:整数或浮点数,在±(253-1)范围内的整数。bigint用于任意长度的整数。string用于字符串:一个字符串可以包含 0 个或多个字符,所以没有单独的单字符类型。boolean用于true和false。null用于未知的值 —— 只有一个null值的独立类型。undefined用于未定义的值 —— 只有一个undefined值的独立类型。symbol用于唯一的标识符。
- 以及一种非原始数据类型:
object用于更复杂的数据结构。
我们可以通过 typeof 运算符查看存储在变量中的数据类型。
- 通常用作
typeof x,但typeof(x)也可行。 - 以字符串的形式返回类型名称,例如
"string"。 typeof null会返回"object"—— 这是 JavaScript 编程语言的一个错误,实际上它并不是一个object。