JS基础知识积累
2016-09-05 15:20
465 查看
1、undefined返回不同的场景。
以window.xxx引用全局变量,寻找不到,会作为某个属性不存在,返回undefined.
直接以XXX引用某变量,寻找不到,则是报xxx is not defined错误。
2、作用域问题。
总结:
JS代码执行:
a、先进行词法分析(预编译)
分析参数–>分析变量声明–>分析函数声明;
具体步骤:
1:函数运行前一瞬间,生成Active Object(活动对象),下称AO;
2:把收到的参数,形成AO的属性,参数的值即属性的值;
3:分析变量声明!如var age;
如果AO上还没有age属性,则添加AO属性,值为undefined
如果AO上已经有age属性,则不做任何影响
4:分析函数声明,如function foo() {},即把函数赋给AO.foo属性,如果此前foo属性已存在,则会被无情的覆盖。
b、然后JS代码自上而下执行;
js词法分析可以下文档:
js词法分析
燕十八JavaScript高级视频教程
初识JavaScript的解析与执行过程
以window.xxx引用全局变量,寻找不到,会作为某个属性不存在,返回undefined.
直接以XXX引用某变量,寻找不到,则是报xxx is not defined错误。
2、作用域问题。
//场景1 var str1 = 'global'; function t1(){ console.log(str1); //global console.log(str2); // undefined var str2 = 'local'; } t1();
//场景2 var str1 = 'global'; function t1(){ console.log(str1); //global console.log(str2); // str2 is not defined str2 = 'local'; } t1();
//场景3 function a(b){ alert(b); function b(){ alert(b); } b(); } a(1);//答案为两个b函数
总结:
JS代码执行:
a、先进行词法分析(预编译)
分析参数–>分析变量声明–>分析函数声明;
具体步骤:
1:函数运行前一瞬间,生成Active Object(活动对象),下称AO;
2:把收到的参数,形成AO的属性,参数的值即属性的值;
3:分析变量声明!如var age;
如果AO上还没有age属性,则添加AO属性,值为undefined
如果AO上已经有age属性,则不做任何影响
4:分析函数声明,如function foo() {},即把函数赋给AO.foo属性,如果此前foo属性已存在,则会被无情的覆盖。
var str = 'local';//分为分析过程和执行过程 //先分析声明 var str;才是str的值为undefined; //再执行赋值操作 str = 'local';
b、然后JS代码自上而下执行;
js词法分析可以下文档:
js词法分析
燕十八JavaScript高级视频教程
初识JavaScript的解析与执行过程
相关文章推荐
- 知识积累(十)——prototype.js 1.4版开发者手册
- JavaScript入门教程(2) JS基础知识
- JavaScript就这么回事 (JS基础知识整理)
- 积累小知识 (JS&HTML&CSS)
- JavaScript就这么回事 (JS基础知识整理)
- JS基础知识总结
- javascript与jquery基础知识积累
- JavaScript学习笔记(一)——JS基础知识介绍
- js中的107个基础知识
- 笔记 - JS易忘基础知识(一)(ECMAScript基础)
- 后缀就扩展名为js的文件是什么文件[原创]_基础知识_脚本之家
- JavaScript就这么回事 (JS基础知识整理)
- js的一些基础知识
- JavaScript学习笔记(一)——JS基础知识介绍
- JavaScript 入门基础知识 想学习js的朋友可以参考下
- 从零开始javascript(1):js基础知识
- JavaScript 入门基础知识 想学习js的朋友可以参考下
- 天极网的面试题,大家有时间做做,考的很基础,所有平常要多积累些基础知识
- JavaScript学习笔记(一)——JS基础知识介绍
- 笔记 - JS易忘基础知识(二)(关于对象和继承)