欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

javascript 之 undefined

程序员文章站 2022-05-18 15:44:46
...
一、用法

undefined 关键字有两种用法:

1. 如果一个 javascript 对象不具有某个属性,则返回 undefined。(反之不成立)

//

var a = {};

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

console.log(a.name === undefined); // true

//


但是 a 并不拥有 name 属性:

//

a.hasOwnProperty('name'); // false

//



2. 用来判断 一个 javascript 对象某个属性的值 是否为 undefined

var a = {};


如果对 a 使用赋值操作符(=)赋值为 undefined 时,则 a 将拥有这个属性。

//

a.name = undefined;   

a.hasOwnProperty('name'); // true

console.log(a.name === undefined);  // true

//



二、举例


var myObject = {
    foo: "bar",
    func: function() {
        var self = this;
        
        // bar
        console.log("outer func:  this.foo = " + this.foo);
        
        // bar
        console.log("outer func:  self.foo = " + self.foo);


        (function() {
            //直接报错,因为 foo 未定义就使用。
            //console.log("inner func:  foo = " + foo); 
            
            //读取this的foo属性。如果没有则返回 undefined.            
            console.log("inner func:  this.foo = " + this.foo); 
            
            // bar
            console.log("inner func:  self.foo = " + self.foo);
        }());

    }
};


myObject.func();










三、与 delete 对比

undefined 是用来判断 javascript 对象某个属性的值 是否 为 undefined,
但不能判断 javascript 对象 是否拥有 某个属性。
如果 javascript 对象 不拥有某个属性,也会返回 undefined 。
用来将某属性的值设置为 undefined,而不能用来删除某个属性。


delete 是用来删除 某个属性的:

//

var a = {};

a.name = undefined;

a.hasOwnProperty('name'); // true

delete a.name;

a.hasOwnProperty('name'); // false


//








—————————————

javascript 函数基础系列文章

1、JavaScript之变量的作用域
2、javascript之变量类型与变量声明及函数变量的运行机制
2.1、javascript 之 undefined
3、javaScript之function定义
4、javascript之function的prototype对象
5、javascript之function的(closure)闭包特性
6、javascript之function的this   
7、javascript之function的apply(), call()



___________


javascript 面向对象编程系列文章:

    1、javaScript之面向对象编程
    2、javascript之面向对象编程之属性继承
    3、javascript之面向对象编程之原型继承 
   

-




-转载请注明出处:
http://lixh1986.iteye.com/blog/2317065





-
引用:
http://*.com/questions/14967535/delete-a-x-vs-a-x-undefined