JS基础知识积累

来源:互联网 发布:unity3d在二线就业好么 编辑:程序博客网 时间:2024/05/17 22:47

1、undefined返回不同的场景。
以window.xxx引用全局变量,寻找不到,会作为某个属性不存在,返回undefined.
直接以XXX引用某变量,寻找不到,则是报xxx is not defined错误。

2、作用域问题。

//场景1var str1 = 'global';function t1(){    console.log(str1); //global    console.log(str2); // undefined    var str2 = 'local';}t1();
//场景2var str1 = 'global';function t1(){    console.log(str1); //global    console.log(str2); // str2 is not defined    str2 = 'local';}t1();
//场景3function 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的解析与执行过程

0 0