[ Day 28 ] - 作用域与范围链

什麽是作用域

  • 静态作用域:在语法解析时就确定作用域且不会再改变,JavaScript 属於此类,又称作语法作用域(lexical scope)
  • 动态作用域:在函式使用的时候才会决定

JS 中每一个 function 的作用域是独立的

如果在作用域内没有需要的变数时,则会向外查找,找不到则会出错
示意图如下:

执行环境

  • 网页一打开就会产生执行环境
  • 执行每一个函式时,在执行堆叠会依照呼叫的函式的顺序,堆叠在全域的执行环境上,并且执行完成後会依照呼叫的顺序一层一层离开,并回到全域的执行环境上。

范围链

  • 指的是当函式本身没有指定的变数的时候,就会往外寻找
  • 函式在撰写完成时会决定其范围链

简单范例:

let food ='巧克力司康';
function eatDessert() {
  console.log('吃' + food);  // 结果为吃巧克力司康
}
eatDessert();


参考资料及学习资源

  • 六角学院 - JavaScript 核心篇
  • 0 陷阱!0 误解!8 天重新认识 JavaScript!

本日小结

这是我的学习纪录,我们下次见罗!


<<:  找LeetCode上简单的题目来撑过30天啦(DAY28)

>>:  Day27【CSS】伪类 & 伪元素

30天零负担轻松学会制作APP介面及设计【DAY 22】

大家好,我是YIYI,今天我要来聊聊我的架构图。 文字版架构图 以COVER放在第一层 第二层是HO...

Day26 - 轻前端 Component - jQuery UI Selectmenu

这个范例把上个范例的 jQuery UI Selectmenu 放到 vue component 内...

第二十六天:在 TeamCity 上显示 API 文件

昨天我们介绍了如何用 KDoc 语法标记程序码并用 Dokka 来产生 API 文件,今天我们要将产...

卡夫卡的藏书阁【Book23】- Kafka - KafkaJS 监控状态事件

“I miss you deeply, unfathomably, senselessly, te...

CSS微动画 - 倒数计时,绘制圆饼图!

Q: 这个用Svg做吧? A: 如果你的需求跟我这款一样,Css就可以画罗~ 上一篇的时钟给小编这...