1.全局预处理与执行
来源:互联网 发布:mac 彻底卸载软件 编辑:程序博客网 时间:2024/06/18 07:49
JavaScript脚本在正式执行前会对全局进行一次预处理,将所有var声明的变量进行一次赋值,赋值为undefined,同时将函数进行声明,写入Lexical Environment(词法环境)而没有用var声明的变量不会在预处理中处理,只有在执行时会定义为全局变量并进行赋值
console.log(a);//Output undefined console.log(b);//Output ƒ b(){console.log("bbb");} console.log(c);//报错!!! c is not defined var a=1; function b(){ console.log("bbb"); } c=2;
注意函数定义方式:function xx(){} 为正常函数声明,而var xx=function(){}为函数表达式形式 看作先定义一个变量再对其进行赋值,所以在预处理结束后他的值应为undefined。
console.log(a);//Output ƒ a(){console.log("aaa");} console.log(b);//Output undefined function a(){ console.log("aaa"); } var b=function(){ console.log("bbb"); }
如果出现定义出现重名时,JavaScript的预处理规则:
处理函数声明有冲突,会覆盖
处理变量声明时有冲突,会忽略
console.log(a);//Output ƒ a(){console.log("a");} var a=1; function a(){ console.log("a"); }
console.log(a);//Output ƒ a(){console.log("a");} function a(){ console.log("a"); } var a=1;
总结
console.log(a);//Output undefined console.log(b);//报错!!! b is not defined console.log(f);//Output ƒ f(){console.log("f");} console.log(g);//Output undefined var a = 5; b=6; console.log(b);//Output 6 function f(){ console.log("f"); } var g = function(){ console.log("g"); } console.log(g);//Output ƒ g(){console.log("g");}
阅读全文
0 0
- 1.全局预处理与执行
- Js的全局预处理、解析与执行
- JS的解析与执行——全局预处理
- JS的解析与执行——全局预处理命名冲突解决策略与执行
- 2.函数预处理与执行
- C语言预处理指令与全局局部变量
- Xcode中 工程全局宏与预处理 的配合使用
- JS的解析与执行——函数预处理与执行
- linux命令全局执行
- mysql,sql的Java连接方法(简单应用)执行sql查询与预处理
- 一些关于函数与变量的预处理和执行的事
- assert预处理宏与预处理变量
- 预处理指令与宏
- 预处理 const 与 sizeof
- 预处理与const
- 预处理、const与sizeof
- 宏与预处理
- 预处理与const
- CSS unicode-range特定字符使用font-face自定义字体
- MySQL之——You can't specify target table 't_order' for update in FRO----mysql的异常
- MySql设置表名大小写不敏感
- 静态路由特点及其配置
- 栈的逆转(递归实现)
- 1.全局预处理与执行
- github的环境部署及使用
- LinuxMint18.2更新管理器丢失
- WhatWeb源码分析之开篇
- 通过网络加载数据显示到ListView
- Android 系统广播大全(后期会在添加);
- 机器学习的入门讲解
- js阻止事件冒泡和标签默认行为
- 第一次写CSDN