JS基础小知识累积二

1.  js中作用域和作用域链的理解。https://blog.csdn.net/lidatgb/article/details/7621744这个博文写的非常棒棒。还解释了闭包。

     变量的作用域:局部变量, 全局变量(成员变量), 隐式全局变量(知道就行,不要用)

    局部变量:存储函数内定义的变量(用var),函数形参,外部不可使用,函数执行完毕后会被销毁。

    全局变量(成员变量):①函数外部定义的变量,所用地方都可以使用。  ②函数内不用var定义的变量,函数不执行,该变量不可用。

    隐式全局变量:①  var a = b = c = 1 ;  b和c都是隐式全局变量。② var a=1; b=2; c=3;  b和c都是隐式全局变量。(分号其实就相当于换行,和全局变量中的第②个等效了)如果是 var a=1,b=2,c=3;这些都是局部变量,分号和逗号的意义不同。

2.  变量声明提升:只提升变量名,不提升变量值(JS预解析关键一步)-----

 等价于

面试的时候经常会考到:变量声明提升+就近原则

JS基础小知识累积二_第1张图片      JS基础小知识累积二_第2张图片

牛客题目:JavaScript无块级作用域,在全局作用域中声明变量a为window的属性;! 优先级大于in,if条件不成立,故没有赋值。

JS基础小知识累积二_第3张图片

JS解析器(预解析)作用:

1. 检查语法错误   

2. 变量声明提升,只提升变量名,不提升变量值

3. 把内容加载到内存中(简单数据类型加载到栈中,复杂数据类型加载到堆中)

3.  AngularJS  https://www.cnblogs.com/wq1994/p/7571601.html初学者博客

AngularJS 是一个 JavaScript 框架。它可通过

你可能感兴趣的:(前端Js,变量声明提升,变量的作用域)