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()
  • 相关阅读:
    CentOS7 PXE安装批量安装操作系统
    004_MySQL 主从配置
    CentOS 桥接网卡配置
    玩转 Jupyter Notebook (CentOS)
    搭建专属于自己的Leanote云笔记本
    wetty 安装(web+tty)
    wget命令详解
    linux 下find---xargs以及find--- -exec结合使用
    Linux 交换分区swap
    Linux 时区的修改
  • 原文地址:https://www.cnblogs.com/z-dl/p/8630554.html
Copyright © 2011-2022 走看看