一、以下几种情况会导致undefined 参考
- 声明的变量未赋值
var a ;
console.log(a) //undefined
- 对象中的属性值不存在
var obj = {
name:'chenhao',
age:22
}
console.log(obj.person) //undefined
console.log(obj.person[1])//取值会报错
- 数组中的属性值不存在
var arr = ['aa','',bb','cc','dd'] 稀疏数组的值也是undefined
console.log(arr[1]) //undefined
console.log(arr[6]) //undefined
- viod操作
- 函数return 无内容
function fn() {
var sum = a + b
sum
//函数不return默认返回undefined
}
function fn() {
var sum = a + b
return //return 后面为空返回undefined
sum
}
二、判断undefined的几种方式
- obj.prop == undefined
- typeof obj.prop == 'undefined'
三、检查属性是否存在
- obj.prop !== undefined
- typeof obj.prop == 'undefined'
- obj.hasOwnProperty('prop')
- 'prop' in obj
- 建议是使用 in 操作符,它的语法短小精悍。in操作符的存在表明一个明确的意图,即检查对象是否具有特定的属性,而不访问实际的属性值。
四、默认解构
var {name="chenhao", age=22} = {name:'ccc'}
console.log(name) //ccc
console.log(age) //22
---------------------------
var {name="chenhao", age=22} = {name:'',age:33}
console.log(name) //'' 除非name属性没有
console.log(age) //33