关于javascript的typeof
2013-12-23 11:31
417 查看
开始看jQuery的源码,碰到typeof突然有点蒙,看完书就忘真是伤不起。用谷歌百度了下,大概了解了一点。
功能:检测数据类型
用法:由于是操作符,typeof x 或者 typeof(x) 均可
返回值:字符串
一、数字类型
常规与非常规数字类型都返回number
表示数值范围的特殊数字类型:
Number.MIN_VALUE ——ECMAScript能够表示的最小数值
Number.MAX_VALUE ——ECMAScript能够表示的最大数值
Infinity——正无穷,超出范围的数值自动转成Infinity or -Infinity
其他特殊数字类型:
NaN——非数值
Number.POSITIVE_INFINITY——表示正无穷大
Number.NEGATIVE_INFINITY——表示负无穷大
二、返回undefined的情况
在变量未声明,或变量的值为undefined时,typeof将返回"undefined",以此检查变量是否存在,是否有值。
下面这种方法也可检测,但当变量未声明时,会抛出异常
三、关于 typeof null 返回"object"
这是由于null被认为是一个空的对象引用。因此如果要检测一个值是否被定义,可以不使用typeof而用下面函数代替:
四、原始值和对象引用
原始值:数字、布尔值、字符串、undefined、null
对象值:所有非原始值
详见JavaScript:如何判断值的类型
检测值是否为对象值,可用下面的函数:
由于上述方法比较复杂,也可用下面的函数检测:
检测原始值类型,要注意typeof null 返回 "object",用下面的函数可修复:
五、默认值运算符
参考文章中提到一个默认值运算符,完全没见过,这里补充进来加深记忆
在判断值既不等于undefined也不等于null时,可以用到此运算符:
等价于
在访问一个嵌套的属性时,可能会用到:
如果obj或者obj.foo未定义,上面的表达式就会抛出异常,这时使用.??可以让上面的表达式在遍历一层一层的属性时,返回第一个遇到的值为undefined或null的属性:
等价于:
参考文章:
JavaScript:typeof的用途
JavaScript中typeof知多少?
功能:检测数据类型
用法:由于是操作符,typeof x 或者 typeof(x) 均可
返回值:字符串
alert(typeof 1); //number alert(typeof "123"); //string alert(typeof true); //boolean alert(typeof undefined);//undefined alert(typeof document); //object alert(typeof null); //object var x = function(){}; alert(typeof x); //function
一、数字类型
常规与非常规数字类型都返回number
表示数值范围的特殊数字类型:
Number.MIN_VALUE ——ECMAScript能够表示的最小数值
Number.MAX_VALUE ——ECMAScript能够表示的最大数值
Infinity——正无穷,超出范围的数值自动转成Infinity or -Infinity
其他特殊数字类型:
NaN——非数值
Number.POSITIVE_INFINITY——表示正无穷大
Number.NEGATIVE_INFINITY——表示负无穷大
二、返回undefined的情况
在变量未声明,或变量的值为undefined时,typeof将返回"undefined",以此检查变量是否存在,是否有值。
下面这种方法也可检测,但当变量未声明时,会抛出异常
variable === undefined
三、关于 typeof null 返回"object"
这是由于null被认为是一个空的对象引用。因此如果要检测一个值是否被定义,可以不使用typeof而用下面函数代替:
function isDefined(x){ return x !== null && x !==undefined; }
四、原始值和对象引用
原始值:数字、布尔值、字符串、undefined、null
对象值:所有非原始值
详见JavaScript:如何判断值的类型
检测值是否为对象值,可用下面的函数:
function isObj(x){ return typeof x === "function" || (typeof x === "object" && x !== null); }
由于上述方法比较复杂,也可用下面的函数检测:
function isObj2(x){ return x === Object(x); }
检测原始值类型,要注意typeof null 返回 "object",用下面的函数可修复:
function getPrimitiveTypeName(x) { var typeName = typeof x; switch(typeName) { case "undefined": case "boolean": case "number": case "string": return typeName; case "object": if (x === null) { return "null"; } default: // 前面的判断都没通过 throw new TypeError("参数不是一个原始值: "+x); } }
五、默认值运算符
参考文章中提到一个默认值运算符,完全没见过,这里补充进来加深记忆
在判断值既不等于undefined也不等于null时,可以用到此运算符:
myValue ?? defaultValue
等价于
(myValue !== undefined && myValue !== null) ? myValue : defaultValue
在访问一个嵌套的属性时,可能会用到:
obj.foo.bar
如果obj或者obj.foo未定义,上面的表达式就会抛出异常,这时使用.??可以让上面的表达式在遍历一层一层的属性时,返回第一个遇到的值为undefined或null的属性:
obj.??foo.??bar
等价于:
(obj === undefined || obj === null) ? obj : (obj.foo === undefined || obj.foo === null) ? obj.foo : obj.foo.bar
参考文章:
JavaScript:typeof的用途
JavaScript中typeof知多少?
相关文章推荐
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 2019年开发人员应该学习的8个JavaScript框架
- IE8开发人员工具教程(二)
- 在flex中执行一个javascript方法的简单方式
- Flex结合JavaScript读取本地路径的方法
- javascript asp教程第六课-- response方法
- javascript asp教程More About Recordsets
- javascript asp教程第十二课---session对象
- javascript asp教程创建数据库连接
- javascript asp教程错误处理
- javascript asp教程第十课--global asa
- javascript asp教程第十一课--Application 对象
- javascript 获取特定的 CSS属性值
- JAVASCRIPT IE 与 FF 中兼容写法记录
- javascript横排竖排标准选项卡效果代码
- javascript prototype,executing,context,closure
- javascript实现的树型下拉框改进版
- 比较简洁的JavaScript 实时显示时间的脚本 修正版