如果在阅读本文的过程中,因为排版或样式问题感到不快,可以在这里阅读原文(VuePress)。
本规范中的算法处理每个值都有关联类型的值。可能的值类型正是本节中定义的值类型。类型又进一步细分为ECMAScript语言类型(language types)和规范类型(specification types)。
规范中定义的的语言类型有[Undefined, Null, Boolean, String, Symbol, Number](基本类型),和Object(引用类型).
Undefined类型
Undefined类型仅有一个值,被称为undefined。任何尚未分配值的变量都是undefined
扩展阅读: void 0和undefined
在很多种书籍中我们可能会见过void 0这样的表达式,通常这个表达式用在代替undefined的位置。那么为什么要使用void 0代替undefined?因为undefined可以被重写,被重写后的undefined会失去他本来的意思,所以会引起一些难以定位的错误。
当然,在部分文章中会有undefined在现代浏览器已经无法被重新赋值,所以提出void 0的意义并不大,我们可以看下面这个例子:
var undefined = 12345
console.log(undefined) // undefined
按照上面代码运行的结果来看,好像undefined确实不能被重新赋值了。但是如果我们在一个块级作用域或函数作用域里给undefined进行赋值,会发生什么事?
function foo(num){
let undefined = 123;
if(num !== undefined){
// do sth.
}else{
console.log('请传入正确的变量num')
}
}
foo(123)