这是我参与8月更文挑战的第14天,活动详情查看:8月更文挑战
前言
大家好哇,今天来记录一下javascript的七种数据类型,内容主要参考《你不知道的JavaScript》(中卷),同时会加上自己的思考,以及实践的例子,有道是好记性不如烂笔头,读了书一定要勤做笔记,这样不仅记的牢固,也能提升自己的水平。
另外提前说明哦,这是一篇前端笔记类的文章,属于个人记录。各位高人请绕道勿喷,谢谢~
正文
JavaScript有七种 内置类型:
- 空值(null)
- 未定义(undefined)
- 布尔值(boolean)
- 数字(number)
- 字符串(string)
- 对象(object)
- 符号(symbol, ES6中新增)
除对象之外,其他统称为“基本类型”。
用typeof运算符来查看值的类型,它返回的是类型的字符串值
typeof undefined === "undefined" // true
typeof true === "boolean" // true
typeof 99 == "number" // true
typeof "99" === "string" // true
typeof {name:'zs'} === "object" // true
typeof Symbol() === "symbol" // true
typeof null === "object" // true
// 检测变量a是否为null应该这样:
(!a && typeof a === "object") === true? '为null' : '不为null'
另外的一种情况:
typeof function a(){} === "function" // true
function(函数) 实际上是object的一个“子类型”,但它是“可调用对象”,它有一个内部属性[[Call]],该属性使其可以被调用。
同时还可以拥有属性。例如 fun.length 就是它形参的个数:
function fun(a,b){
/*......*/
}
fun.length === 2 // true
数组 也是对象。它也是object的一个“子类型”,数组的元素按数字顺序来进行索引(而非像普通对象那样通过字符串键值),其length属性是元素的个数。
typeof [1,2,3,4,5] === "object" // true
在对变量执行typeof操作时,得到的结果并不是该变量的类型,而是该变量持有的值的类型,因为JavaScript中的变量没有类型。
因为JavaScript中的 变量是没有类型的,只有值才有。
变量可以随时持有任何类型的值,一个变量可以现在被赋值为字符串类型值,随后又被赋值为数字类型值。
undefined是未赋值。undeclared则表示变量还没有被声明过。但是typeof对undefined和undeclared变量都返回"undefined"。
typeof的安全防范机制是指 避免使用已在作用域中声明但未赋值的变量,或者未在作用域中声明的变量,从而避免引起报错。
不通过typeof的安全防范机制的方法,也可以直接检查所有全局变量是否是全局对象的属性,即使用浏览器中的全局对象window,访问不存在的对象属性(甚至是在全局对象window上)不会产生ReferenceError错误。一些开发人员不喜欢通过window来访问全局对象,尤其当代码需要运行在多种JavaScript环境中时(不仅仅是浏览器,还有服务器端,如node.js等),因为此时全局对象并非总是window。
后记
你好哇,我是南极大冰块,一个技术与颜值成正比的前端工程师,崇尚一针见血的搞定前端问题,希望我的博客有帮助到了你。
关注我,前端路途一起走。嘿哈~😛