JavaScript吊装和IIFE

时间:2016-11-14 14:56:43

标签: javascript

我在学习JavaScript提升时写了一个例子。



var name = 'world';
(function(){
    if(typeof name === undefined){
	   var name = 'Jack';
	   console.log('goodbye ' + name);
    }else{
	   console.log('hello '+ name);
    }
}
)();




在这个例子中,我得到了hello undefined。令我困惑的是,由于name未定义,为什么它根据goodbye undefined声明没有记录if

谢谢!

4 个答案:

答案 0 :(得分:2)

您可以直接检查undefined



var name = 'world';

(function () {
    if (name === undefined) {
        var name = 'Jack';
        console.log('goodbye ' + name);
    } else {
        console.log('hello ' + name);
    }
})();

console.log(name);




答案 1 :(得分:2)

你不必使用typeof,你可以直接检查名称=== undefined。

var name = 'world';
(function(){
    if(name === undefined){
	   var name = 'Jack';
	   console.log('goodbye ' + name);
    }else{
	   console.log('hello '+ name);
    }
}
)();

答案 2 :(得分:1)

<RelativeLayout android:id="@+id/footer" android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="visible" android:layout_alignParentBottom="true"> <ImageView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentEnd="true" android:src="@drawable/ic_devicescreenlogo" /> <TextView android:id="@+id/version" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:paddingBottom="5dp" android:paddingStart="5dp" android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="@color/textunselected" android:text="Version"/> </RelativeLayout> 返回一个字符串。

typeof

typeof(undefined) === "undefined" //true

更多关于undefined === undefined //truehttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof

答案 3 :(得分:0)

修复逻辑错误时,输出符合预期。

&#13;
&#13;
var name = 'world';
(function(){
    if(typeof name === "undefined"){
	   var name = 'Jack';
	   console.log('goodbye ' + name);
    }else{
	   console.log('hello '+ name);
    }
}
)();
&#13;
&#13;
&#13;