变量与数据类型
ECMAScript的变量是松散类型:可以用来保存任何类型的数据 var let const
1 | var message = 'hello word' // 右边赋值到左边 var 声明语句声明一个变量 |
注:在严格模式下,不能定义名为 eval 或 arguments 的变量,否则会导致语法错误
数据类型:
5中简单数据类型(基本数据类型):一种复杂数据类型
Undefined | Null | Boolean | Number | String |
---|---|---|---|---|
未定义(一个值) | 空对象指针(一个值) | 布尔值 | 数值 | 字符串(不可变) |
true与false | 由双 引号(")或单引号(')表示(左右引号必须匹配*) | |||
如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为 null 而不是其他值 | true 不一定等于 1,而 false 也不一定等于 0 | 十进制表示外,整数还可以通过八进制(以 8 为基数)或十六进制(以 16 为基数)的字面值 来表示。 | 由零或多个 16位Unicode字符组成的字符序列 | |
八进制字面值的第一位必须是零(0),然后是八进制数字序列(0~7)。如果字面值中的 数值超出了范围,那么前导零将被忽略,后面的数值将被当作十进制数值解析。(八进制字面量在严格模式下是无效的,会导致支持的 JavaScript引擎抛出错误。)* |
Object | 对象可以通过执行 new 操作符后跟要创建 的对象类型的名称来创建。 |
---|---|
一组数据和功能的集合 | 即在 ECMAScript中, Object 类型是所有它的实例的基础。 |
复杂数据类型 | “Object 类型所具有的任何属性和方法也同样存在于更具体的对象中。” |
构造函数(constructor) 就是 Object() |
Object 本质上是由一组无序的名值对组成的
typeof操作符:检测给定的数据类型[它是一个操作符而不是一个函数]
PS:typeof 操作符会返回一些令人迷惑但技术上却正确的值。比如,调用 typeof null 会返回"object",因为特殊值 null 被认为是一个空的对象引用
转换:
数值转换:
3个函数可以把非数值转换为数值:Number()、parseInt()和 parseFloat()。第一个函数, 即转型函数 Number()可以用于任何数据类型,而另两个函数则专门用于把字符串转换成数值。
转换为字符串:
toString()方法
PS:null 和 undefined 没有 toString()方法