• 【JavaScript基础】js中关于声明提前的几个误区


    声明提前: 

      在程序正式执行之前,都会将所有的var声明的变量提前到开始位置,集中创建,而赋值留在原地。

    例如这样一段代码

    console.log(a)
    var a = 100;
    console.log(a);
    var a = 200;
    console.log(a);
    
    console.log(b);
    b = 10;
    console.log(b);

    声明提前之后实际上运行的先后顺序是

    var a;
    console.log(a)    //undefined
    a = 100;
    console.log(a);  // 100
    a = 200;
    console.log(a);   // 200
    
    console.log(b);   // ReferenceError
    b = 10;
    console.log(b);   // 10
    
    //只要碰到声明提前的问题,都要先提前,再判断输出
    //代码中a变量的声明应提到作用域最前面,注意js中只有全局作用域和函数作用域
    // 赋值留在原地,只声明没赋值的为Undefined 
    // 变量b 没有声明而直接使用  会报错,但是未声明直接赋值的话,js中就会自动为其创建同名变量,再保存数据,不会出错。
    // 因此从一个未声明过的变量中取值 会出错

    函数中: 在程序执行之前或者函数被调用前,将var声明的变量和function声明的函数提到当前作用域顶部集中创建,赋值留在原地。

    注意:

    匿名函数 (定义时不指定函数名的函数)  定义完立刻执行,执行完立刻释放,只有确定函数值执行一次时使用,不提前

    匿名函数自调:定义在哪儿,就在哪执行,不提前。

  • 相关阅读:
    查看SQL语句执行时间、IO开销
    创建性能监视器(logman)
    IIS连接数
    SQL Server重建索引计划
    删除不存在的网卡
    授予普通域用户远程桌面连接DC/客户端权限
    AD新建用户、组、OU
    常用短语
    Android之APP模块编译
    Web&网络协议
  • 原文地址:https://www.cnblogs.com/Auyuer/p/8593624.html
Copyright © 2020-2023  润新知