JS代码在执行的时候会先找出执行代码中定义的变量和函数,对其进行声明。

例1:console.log(a);

var a = 4;

此时输出undefined。a变量在执行console.log(a);这条语句之前就已经被定义了只是没有赋值。实际的执行顺序是:var a ; console.log(a);a=4;

例2:var a = 3;

function fn(){

  console.log(a);

  var a = 4;

}

fn();

执行输出undefined。在执行fn()函数时由于变量提升实际执行的顺序是:var a;console.log(a);a=4;。所以输出undefined。如果没有在函数中重新定义变量a,则输出a时的值就是全局的a的值为3,因为在输出a时会优先取离奇最近的那个a变量的值。

例3:

fn();

function fn(){

  var a = 4;

  console.log(a);

}

执行输出4。因为函数声明提升,会优先执行函数的声明。实际执行的代码:

function fn(){

  var a = 4;

  console.log(a);

}

fn();

例4:

fn1();

var fn1 = function(){

  console.log(4);

}

执行结果会报。这里是变量声明会优先,函数声明提升只使用于使用函数声明的方式。这里执行的代码顺序为:var fn1;fn1();fn1 = function(){console.log(4);}

最新文章

  1. 【原创】开源Math.NET基础数学类库使用(02)矩阵向量计算
  2. git 设置代理服务器
  3. Your pain
  4. Jenkins遇到问题三:调整jdk版本不生效的解决办法
  5. jsp学习一
  6. StereoBM::disp12MaxDiff Crash the Release
  7. MySQL 卸载 --Mac
  8. 【HDOJ】2888 Check Corners
  9. BZOJ 4311: 向量( 按时间分治 + 线段树 )
  10. php调用js变量
  11. Mac下面的SecureCRT以及破解方案详解
  12. linux系统ubuntu18.04安装mysql(5.7)
  13. SQL-53 按照dept_no进行汇总,属于同一个部门的emp_no按照逗号进行连接,结果给出dept_no以及连接出的结果employees
  14. centos7 下安装pycharm
  15. 走进JDK(一)------Object
  16. 通过@Value注解读取.properties配置内容
  17. c++ 插入容器元素(insert)
  18. domain---Node.js 异步异常的处理与domain模块解析
  19. MySQL多表关联查询与存储过程
  20. linux内核追踪(trace)(QEMU+gdb)

热门文章

  1. Codeforces Round #618 (Div. 1)B(几何,观察规律)
  2. iptables详解(1):命令参数解析
  3. 输入与输出 Perl 第五章
  4. html2canvas.js 图片不显示
  5. react脚手架和深入理解jsx语法
  6. putty上传下载文件
  7. PHP+Mysql防止SQL注入的方法
  8. vue使用过程中遇到的细节问题
  9. C:函数 注意点
  10. denied: requested access to the resource is denied 解决办法