[js]js中4种无节操的预解释情况

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>
posted @ 2018-02-05 12:13  mmaotai  阅读(135)  评论(0编辑  收藏  举报