zoukankan      html  css  js  c++  java
  • 1.3 预解释是一种毫无节操的机制

    预解释是毫无节操的一种机制,自从学了预解释,从此节操是路人

    1.预解释的时候,不管你的条件是否成立,都要把带var的进行提前的声明

      // window的预解释:var num;-》window.num;

    // num in window 判断num是否为window这个对象的一个属性,是的话,返回true,不是的话返回false
    if (!("num" in window)){ // true 取反 false
      var num = 12  
    }
    console.log(num)// undefined

    2.预解释的时候,只预解释“=”左边的,右边的是值,不参与预解释

      匿名函数之函数表达式:把函数定义的部分当做一个值赋值给我们的变量/ 元素的某个事件

      // window下的预解释:var fn;

    fn(); // undefined() Uncaught TypeError: fn is not a function 报错
    var fn = function () {
      console.log("ok")  
    }

    3.执行函数定义的那个function在全局作用域下不进行预解释,当代码执行到这个位置的时候定义和执行一起完成了

      自执行函数:定义和执行一起完成

      (function (num){})(100)

      +function (num){}(100)

      -function (num){}(100)

    4.函数体重return下面的代码虽然不在执行了,但是需要进行预解释,return后面跟着的都是我们的返回值,所以不进行预解释

    function fn () {
     // 预解释:var num; console.log(num) // undefined
    return function () {} var num = 100 } fn ()

     5.在预解释的时候如果名字已经声明过了,不需要重新的声明,但是需要重新的赋值

      在js中如果变量的名字和函数的名字重复了,也算冲突

    // 预解释的时候:var fn;->window.fn;  fn=xxxfff000;->window.fn=xxxfff000
    var fn = 13;
    function fn () {
      console.log("ok");  
    }
    // window预解释:
    // 声明+定义 fn=xxxfff111
    // 声明var fn;(不需要重新声明)
    // 声明(不重复进行)+定义 fn=xxxfff222
    // -> fn=xxxfff222
    fn();//2 function fn(){ console.log(
    1) } fn();//2 var fn =10// ->fn=10 fn();// -> 10() Error is not a function function fn() { console.log(2) } fn()
  • 相关阅读:
    cf C. Vasya and Robot
    zoj 3805 Machine
    cf B. Vasya and Public Transport
    cf D. Queue
    cf C. Find Maximum
    cf B. Two Heaps
    cf C. Jeff and Rounding
    cf B. Jeff and Periods
    cf A. Jeff and Digits
    I Think I Need a Houseboat
  • 原文地址:https://www.cnblogs.com/z-dl/p/8630554.html
Copyright © 2011-2022 走看看