面试时,经常会被问到

对undefined的理解?

本文, 针对undefined做了超详细的总结 ,请仔细看哦~~

1、undefined 即是一个原始数据类型,也是一个原始值。

2、undefined 是全局对象上的一个属性 window.undefined。

代码语言:javascript代码运行次数:0运行复制console.log( window.undefined );

// undefined3、不可写 writable: false

代码语言:javascript代码运行次数:0运行复制window.undefined = 123;

console.log( undefined );

// undefined4、不可配置 configurable: false

代码语言:javascript代码运行次数:0运行复制delete window.undefined;

console.log( undefined );

// undefined5、不可枚举 enumerable: false

代码语言:javascript代码运行次数:0运行复制for( var k in window) {

if( k === undefined) {

cosole.log( k );

}

}

// 没有输出6、不可重新定义:

代码语言:javascript代码运行次数:0运行复制Object.definProperty(window, 'undefined', {

writable: true,

enumberable: true,

configurable: true

})

// 结果报错7、系统会给未赋值的变量自动赋值为:undefined

代码语言:javascript代码运行次数:0运行复制var a;

console.log( a );

// undefined8、函数没有返回值的时候,系统会自动给函数返回:undefined

代码语言:javascript代码运行次数:0运行复制function a () {

console.warn('123')

}

console.log( a() );

// undefined9、全局作用域下:window.undefined 不可写,但是局部作用域下可以重新赋值。

代码语言:javascript代码运行次数:0运行复制var undefined = 1; //相当于给window.undefined赋值

console.log( undefined );

// undefined ,因window.undefined不可写,所以改不了

function test() {

var undefined = 1;

console.log( undefined )

}

test();

// 1 原因在于,undefined并不是js的关键字。因,undefined不是js的关键字,所以在局部作用域中,可以使用undefined做为变量名。

10. 如何判断是undefined

判断是否为 undefined ,使用全等 ===

代码语言:javascript代码运行次数:0运行复制var a;

if(a===nudefined){

console.log(true);

}else{

console.log(false)

}

// true为什么不使用 == ,防止判断出现错

代码语言:javascript代码运行次数:0运行复制var a=null;

if(a==nudefined){

console.log(true);

}else{

console.log(false)

}

//结果也为true为防止这种情况,所以,最好使用全等

由于在局部作用域中,undefined可以作为变量名重新赋值,所以我们在局部作用域中使用 undefined这个值时,最好用 void(0) 或者 window.undefined 代替。

void(0) 是直接返回一个undefined值,效率还要优先于 window.undefined 的查找。

11、未定义变量,typeof 也会输出undefined,不会报错

代码语言:javascript代码运行次数:0运行复制typeof

var a ;

console.log(typeof a) ; //undefined;

console.log(typeof b); //undefined因为typeof 进行了处理. 故未定义变量也不会出错,而是返回undefined

但若单独打印 console.log(b) 是会报错.

VM402:1 Uncaught ReferenceError: b is not defined

at :1:13

12、判断a 是否申明, 使用 in 关键字

代码语言:javascript代码运行次数:0运行复制var a;

if('a' in window){

console.log(true)

}else {

console.log(false)

}13、void关键字

void(0) : 对0进行求值 返回undefined

注:void返回的结果,都是undefined

void的使用

赋值undefined

代码语言:javascript代码运行次数:0运行复制var a,b,c;

a= void(b=1,c=2);

console.log(a,b,c)

//undefined 1 2 阻止跳转

代码语言:javascript代码运行次数:0运行复制另注:

console.log( void(0) === window.undefined );

结果为true;

示例:

代码语言:javascript代码运行次数:0运行复制function test(){

var undefined =1;

console.log(undefined); //1

console.log(void(0)); //undefined

console.log(undefined === void(0)); //false

console.log(window.undefined===void(0)); //true

}

test();为防止有人用undefined做变量,可以使用void(0)代替,void(1),void(100)也可以,要不然就是window.undefined

void(0) 与window.undefined相比,void(0)效率更高些

现在,代码相对比较规范,所以void(0)出现会比较少。但底层代码还是会有所使用

最后,还是希望大家代码规范

top
Copyright © 2088 篮球世界杯美国队名单_意大利世界杯预选赛 - pyqtui.com All Rights Reserved.
友情链接