JavaScript 学习笔记 之 类型
程序员文章站
2024-03-19 14:18:52
...
JavaScript中的类型
JavaScript中变量是没有类型的,只有值才有,变量可以随时持有任何类型的值
JavaScript中的类型包括了6个基本类型(ES6中新增了一个symbol),和一个复杂类型(object)
- 空值(null)
- 未定义(undefined)
- 布尔值(boolean)
- 数字(number)
- 字符串(string)
- 对象(object)
- 符号(symbol,ES6新增)
我们可以用typeof运算符来查看值的类型,他返回的是一个字符串值
typeof undefined === "undefined"
typeof true === "boolean"
typeof 42 === "number"
typeof "42" === "string"
typeof {life: 42} === "object"
typeof Symbol() === "symbol"
以上六种类型均有同名的字符串与之对应
除了null
typeof null === "object"
这是因为一个由来已久的bug
JavaScript把二进制前三位为0的值判断为对象
而null的二进制全为零
于是被误判为了对象
因此我们需要用复合条件来检测null值的类型(既是假值,typeof返回的又是对象的基本类型)
var a = null;
(!a && typeof a === "object"); //true
还有一种情况
typeof function(){} === "function"
typeof [1, 2, 3] === "object"
似乎function也是一种类型
但是function事实上和数组一样也是object的一个子类型
function有一个内部属性[[call]]
该属性使其可以被调用
还有一个属性length,表示声明的参数的个数
数组的length则表示数组的长度
function a(b, c) {}
a.length; //2
被误解的undefined
似乎undefined代表这变量未声明
但事实上undefined代表的是变量已声明但是未持有值
var a;
a; //undefined
b; //ReferenceError: b is not defined
而我们用typeof输出却会发现
typeof a; //undefined
typeof b; //undefined
这是因为typeof有一个特殊的安全机制
安全机制
上面我们说到typeof有一个不报错的检查一个未声明的变量的安全机制
事实上这个安全机制可以帮我们很多忙
if(a) {} //如果a未定义,会抛出一个错误
if(typeof a !== "undefined") {} //这样则是安全的
另外一种方法是通过对象的属性来进行检查
比如检查一个全局变量的时候
if(window.a) {
/*..*/
}
上一篇: STM32的DAC输出驱动电压
推荐阅读
-
JavaScript 学习笔记 之 类型
-
JavaScript 学习笔记 (0)
-
Golang学习笔记之MD5
-
JavaScript学习记录-Function类型
-
Python学习笔记_5基本数据类型
-
5.python学习笔记——基本数据类型
-
Python新手学习基础之数据类型——字符串的切片截取 博客分类: Python python切片截取索引分割步长
-
16进制转浮点型_python学习笔记------数据类型及内置方法(整型,浮点型)
-
《机器学习实战》个人学习记录笔记(三)———k-近邻算法实战之sklearn手写数字识别
-
linux学习笔记之shell(1) 博客分类: linux linuxshell