只有一个值,即特殊的 undefined
。声明了但未对其加以初始化时,这个变量的值就是undefined
。对未声明的变量使用typeof
操做符会返回undefined
。可是其它操做的话就会报错。浏览器
console.log(typeof foo) // "undefined" console.log(foo) // ReferenceError
关于 undefined
还有一种严谨的作法就是经过 void 0
来实现。这样实现的缘由是 undefined
不是 JavaScript 的关键字,也就是说能够将 undefined
做为标识符,或者说 window.undefined
的值是能够被修改的。函数
只有一个值,即特殊的 null
。从逻辑角度来看,null
值表示一个空对象指针,因此使用typeof
操做符检测null
值返回object
。测试
若是定义的变量准备在未来用于保存对象,那么最好将该变量初始化为
null
。
主要介绍 Boolean() 函数设计
console.log(Boolean('a')) // true console.log(Boolean('')) // false console.log(Boolean(1)) // true console.log(Boolean(0)) // false console.log(Boolean(-1)) // true console.log(Boolean(NaN)) // false console.log(Boolean(Infinity)) // true console.log(Boolean(-Infinity)) // true console.log(Boolean({})) // true console.log(Boolean(null)) // false console.log(Boolean(undefined)) // false
采用IEEE754格式来表示整数和浮点数值。指针
// 十进制 const intNum = 55; // 八进制 -- 第一位必须是 0 ,后面是八进制数字序列(0 ~ 7)在严格模式下无效,并抛出错误。 const octalNum1 = 070; // 八进制的 56 const octalNum2 = 079; // 无效的八进制数值--解析为79 const octalNum3 = 08; // 无效的八进制数值--解析为8 // 十六进制 -- 前两位必须是 0x ,后面是十六进制数字(0 ~ 9 及 A ~ F),字母 A ~ F 不分大小写。 const hexNum1 = 0xA; // 十六进制的10 const hexNum1 = 0x1f; // 十六进制的31
在进行算数运算时,全部八进制和十六进制的数值都将被转换为十进制数值。code
const floatNum1 = .1; // 有效,不推荐 const floatNum2 = 1.; // 小数点后没有数字,解析为1 const floatNum3 = 10.0; // 整数,解析为10 const floatNum4 = 3.125e7; // 科学计数法。3.125乘以10的7次方。等于 31250000。 //判断两个数是否相等 function equal(n1, n2) { return Math.abs(n1 - n2) < Number.EPSILON; } equal(0.1 + 0.2, 0.3) // true
经过 isNaN() 函数检查传入的参数是否“不是数值”。对象
console.log(0/0); // NaN console.log(10/0); // Infinity console.log(-10/0); // -Infinity console.log(10/'a'); // NaN console.log(10/''); // Infinity console.log(10/undefined); // NaN console.log(10/true); // 10 console.log(10/false); // Infinity console.log(10/null); // Infinity console.log(isNaN(NaN)); // true console.log(isNaN(10)); // false console.log(isNaN("10")); // false -- 能够被转换成数值10 console.log(isNaN("blue")); // true -- 不能转换成数值 console.log(isNaN(true)); // true -- 能够被转换成数值 1 // isNaN() 也适用于对象。会先调用对象的 valueOf() 方法,若是返回值不能转换为数值,则基于这个返回值再调用 toString() 方法,再测试返回值。
console.log(Number(10)); // 10 console.log(Number("")); // 0 console.log(Number("abc")); // NaN console.log(Number("000011")); // 11 console.log(Number("123abc")); // NaN console.log(Number(true)); // 1 console.log(Number(false)); // 0 console.log(Number(undefined)); // NaN console.log(Number(null)); // 0 // 使用 parseInt() 推荐始终带上第二个参数:转换时使用的基数(即多少进制)。 console.log(parseInt(22.5); // 22 console.log(parseInt("")); // NaN console.log(parseInt("70")); // 70 console.log(parseInt("123abc")); // 1234 console.log(parseInt("070")); // ECMAScript 5 认为是70(十进制),ECMAScript 3 认为是56(八进制) console.log(parseInt("0xA")); // 10 console.log(parseInt("0xf")); // 15 // parseFloat() 会解析每一个字符,或解析到碰见一个无效的浮点数字符为止。并且始终会忽略前导的零。只解析十进制值。 console.log(parseFloat("22.5")); // 22.5 console.log(parseFloat("123abc")); // 123 console.log(parseFloat("0xA")); // 0 console.log(parseFloat("22.34.5")); // 22.34 console.log(parseFloat("0908.5")); // 908.5 console.log(parseFloat("3.125e7")); // 31250000
String 类型用于表示由零或多个16位Unicode字符组成的字符序列,即字符串。任何字符串的长度均可以经过访问其length
属性取得。ip
String数据类型包含一些特殊的字符字面量,也叫转义序列。
字面量 含义 \n 换行 \t 制表 \b 退格 \r 回车 \f 进纸 \\ 斜杠 \' 单引号 ( ' ) ,在用单引号表示的字符串中使用,例如: 'He said, \'hey.\' ' \" 双引号 ( " ) ,在用双引号表示的字符串中使用,例如: "He said, \"hey.\" " \xnn 以十六进制代码 nn 表示的一个字符(其中 n 为 0 ~ F)。例如, x41 表示 'A' \unnnn 以十六进制代码 nnnn 表示的一个 Unicode 字符(其中 n 为 0 ~ F)。例如, u03a3 表示希腊字符 Σ
1. toString()
除了null
和undefined
没有这个方法,其它都有。有一个参数:输出数值的基数,默认是十进制。字符串
const num = 10; console.log(num.toString()); // "10" console.log(num.toString(2)); // "1010" console.log(num.toString(8)); // "12" console.log(num.toString(10)); // "10" console.log(num.toString(16)); // "a" const bool = true; console.log(bool.toString()); // "true" const obj = {}; console.log(obj.toString()); // "[object Object]" const func = function() {}; console.log(func.toString()); // "function() {}" const nul = null; console.log(nul.toString()); // TypeError: Cannot read property 'toString' of null const unde= undefined; console.log(unde.toString()); // TypeError: Cannot read property 'toString' of undefined
2. String()
在不知道要转换的值是否是null
或undefined
的状况下,还可使用转型函数String()
,这个能够将任何类型的值转为字符串。遵循如下转换规则get
toString()
方法,则调用该方法(没有参数)并返回相应的结果;null
,则返回"null"
undefined
,则返回"undefined"
3. 使用加号操做符与一个字符串(" ")加在一块儿
const bool = true; console.log(bool + ""); // "true" const nul = null; console.log(nul + ""); // "null" const unde= undefined; console.log(unde + ""); // "undefined"
// typeof的操做数能够是变量也能够是字面量 console.log(typeof foo) // "undefined" console.log(typeof true) // "boolean" console.log(typeof "abcd") // "string" console.log(typeof 1) // "number" console.log(typeof null) // "object" console.log(typeof {}) // "object" console.log(typeof function(){}) // "function"