昼猫笔记 JavaScript -- 作用域技巧!!

 

简单理解

复制代码
var zm = function (x) {     var code = 'bb'    return code };
复制代码

 

学过js的老哥们都知道,当这样简单的一个函数进入浏览器,浏览器开始解释代码,会将window分两个模块:存储模块、执行模块。
存储模块,找到所有的varfunction关键字,给这些变量添加内存地址
执行模块,代码从上到下执行,遇到变量就回去存储模块查找是否有该变量
如果有该变量,就看是否赋值,如果赋值了就是后面的值,没有赋值就是undefined
如果没找到 结果就是xxx is not defined
对于作用域可能对于部分人来说是难以理解的知识点,今天呢就列举5个知识点,只要记住这几句话,作用域对你来说就是小意思

一、“JavaScript中无块级作用域”

在Java或C#中存在块级作用域,即:大括号也是一个作用域。

复制代码
public static void main (){     if(1==1){         String name = "seven";     }     System.out.println(name); } // 报错
复制代码

 

在JavaScript语言中无块级作用域

复制代码
function Zhoumao() {     if(1 == 1){         var name = '昼猫'     }     console.log(name); } Zhoumao()
// 输出:昼猫
复制代码
 

补充:标题之所以添加双引号是因为JavaScript6中新引入了 let 关键字,用于指定变量属于块级作用域。


二、JavaScript采用函数作用域

在JavaScript中每个函数作为一个作用域,在外部无法访问内部作用域中的变量。

复制代码
function Zhoumao() {     var name = '昼猫' } Zhoumao() console.log(name); // 报错:ReferenceError: name is not defined
复制代码

 


三、JavaScript的作用域链

由于JavaScript中的每个函数作为一个作用域,如果出现函数嵌套函数,则就会出现作用域链。

复制代码
name = '昼猫'function

                    
                
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信