undefined和void

时间:2023-03-08 21:57:09

1.undefined

undefined在js中并不是关键字/保留字,因此在IE5.5~8中可以对undefined赋值,但是在IE9以上,对其赋值是无效的

<script>
    var a= undefined;
    undefined = 1;
    console.log(a);
    console.log(undefined);
    console.log(typeof a);
    console.log(typeof undefined);
</script>

在IE 6,7,8中的结果为:

undefined

1

undefined

number

在IE 9以上以及其他浏览器中

undefined

undefined

undefined

undefined

2.void的行为特点

  1.不管void后面的操作数是什么,void都返回纯正的undefined;

  2.void会对后面的操作数作一次取值操作,如果后面是一个getter函数,则执行一次getter函数

<script>
         var article = {
            _view: 0,
            get view(){
                console.log(this._view);
                return this._view++;
            }
        };
        var test = void article.view; // 执行一次getter函数,输出0并返回undefined
        console.log(test); // 显示undefined
        console.log(article._view); // 显示1

        var test = delete article.view;//delete不会执行getter函数,删除成功返回true,否则返回false
        console.log(test);    //显示true
        console.log(article._view); // 显示1
        console.log(article.view); //显示undefined
</script>