JS 作用域 DAY47

JS 语法(静态)作用域(Lexical scope)

//语法作用域function callName(){    var chicken = '小鸡'    console.log(chicken);}callName();//读不到console.log(chicken);

http://img2.58codes.com/2024/20123039drv8jItynC.jpg
会发现外层读不到内层所宣告的 chicken
是因为 JS 的作用域在函式(function)内
所以在内层宣告变数
外层当然是读不到啦~~


作用域又分成两种
http://img2.58codes.com/2024/20123039ilEIdQAIrI.jpg

静态(语法)作用域
Def:
变数的作用域在语法解析时,就已经确定作用域,且不会再改变
也就是在撰写函式时 作用域就已经确定
JS属于 静态作用域

动态作用域
Def:
变数的作用域在函式调用时才决定

除此之外 JS的作用域是一层一层向内
若 作用域内有用到变数
但作用域却没有此变数
则会向外查找
若向外查找也没有(以下图 会去全域找)
则会出现 ReferenceError : 变数 is not defined

//全域// fn1作用域 独立function fn1(){}// fn2作用域 独立function fn2(){}

这里举一个例子

var num = 1;function fn1(){    //静态作用域: 1    //动态作用域: 10    console.log(num);}function fn2(){    var num = 10;    fn1();}fn2();

那今天的介绍就到这里
若有任何问题 或 内容有误
都可以跟我说唷http://img2.58codes.com/2024/emoticon07.gif


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章