1. 程式人生 > >[js]js中4種無節操的預解釋情況

[js]js中4種無節操的預解釋情況

scrip 是否 if語句 orange 表達 一個 報錯 body fun

js中4種無節操的預解釋情況

- 1. if語句即使條件不成立,條件裏的表達式也會進行預解釋.
- 2. 匿名函數的預解釋:  只對等號左邊與解釋
- 3. 自執行函數的預解釋: 不進行預就解釋, 執行的時候,定義+執行
- 4. return下面的語句也會進行預解釋,但是return後面的語句不進行預解釋
<script>
    var p1 = {name: "maotai"};
    console.log(age); //1.即使條件不成立,條件裏的表達式也會進行預解釋.
    if ("age" in p1) { // 是否是對象的一個屬性
        var age = 22;
        console.log("name in p1")
    }
    console.log("--------------------------------");

    // 2.匿名函數的預解釋:  只對等號左邊與解釋
    fn();

    function fn() {
        console.log("fn is running!");
    }

    fn();
    console.log("--------------------------------");

    // 等號右邊的不會進行預解釋.
    //    fn2(); //報錯
    var fn2 = function () {
        var favor = "orange";
        console.log("fn2 is running!")
    };
    fn2();

    // 3. 自執行函數的預解釋: 不進行預就解釋, 執行的時候,定義+執行
    ~function (num) {
        console.log("I am zi zhi xing fun " + num);
    }(100);

    // 4, return下面的語句也會進行預解釋,但是return後面的語句不進行預解釋
    console.log("--------------------------------");

    function fn3() {
        console.log(num3);
        return function () { }; // 這個function不會進行與解釋
        var num3 = 330;         // 這裏會進行預解釋
    }
    fn3();
</script>

[js]js中4種無節操的預解釋情況