JS 语法(静态)作用域(Lexical scope)
//语法作用域
function callName(){
var chicken = '小鸡'
console.log(chicken);
}
callName();
//读不到
console.log(chicken);
会发现外层读不到内层所宣告的 chicken
是因为 JS 的作用域在函式(function)内
所以在内层宣告变数
外层当然是读不到啦~~
作用域又分成两种
静态(语法)作用域
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();
那今天的介绍就到这里
若有任何问题 或 内容有误
都可以跟我说唷
前言 前面两篇文章学习了 Struct 和 Class, 两者用法相同、功能相似, 都可以用来储存 ...
功能测试时很常需要删掉坏掉的资料库纪录,这时就需要重置测资,但每次都开管理工具来做太麻烦了,写个小工...
思考重点 如何看懂IP代表的意思 子网内的设备可以被直接访问吗 网路设定中的255.255.255....
昨天我们已经完成了 Sign in with Facebook 的前置作业了,今天我们要来将功能实作...
本来预计都写在 Day22 的,但是加上本篇内容後会让一天的篇幅太长,且考虑到有些夥伴可能没有建立资...