在JavaScript中,undefined并非保留字,可能被重新赋值导致检测失效。本文介绍三种获取纯正undefined的方法:使用void(0)、利用未赋值的函数形参以及声明未赋值的变量。同时补充说明使用typeof判断undefined类型的正确方式,确保代码在不同浏览器下的兼容性与准确性。
获取纯正undefined的必要性
1、为何需要获取undefined?
由于undefined在javascript中并非保留字,可被用户赋值,导致后续检测变量时结果不准确;
示例:
var undefined=10;
function sum(a,b){
if(a===undefined||b===undefined){
console.log("参数不正确");
}18101130357
return a+b;
}
sum(10,10)->原本正确的参数,控制台输出"参数错误";
为兼容所有浏览器,需获取纯正的undefinde
获取纯正undefined的三种方法
2、如何获取纯正的undefined?
1) void (0):
在ECMAScript 262规范中,描述如下:
The void Operator
The production UnaryExpression : void UnaryExpression is evaluated as follows:
Let expr be the result of evaluating UnaryExpression.
Call GetValue(expr).
Return undefined.
总之,无论void后的表达式为何,void操作符均返回undefined
2) 传入未赋值的形参
[案例]
function(_undefined){
//函数体中不给_undefined赋值,形参_undefined的值就是undefined,在这个函数用就可以使用_undefined了
}
3)未赋值的变量
示例:var num //原理同2)
不要厌烦熟悉的事物,每天都进步一点;不要畏惧陌生的事物,每天都学习一点;
PS:js判断undefined类型
if (reValue== undefined){
alert("undefined");
}
发现判断不出来,最后查了下资料要用typeof
方法:
if (typeof(reValue) == "undefined") {
alert("undefined");
}
typeof 返回字符串,有六种可能:"number"、"string"、"boolean"、"object"、"function"、"undefined"