You Don't Know JS: Scope & Closures (附加:Lexical/dynamic作用域)

JavaScript只有Lexical Scope 模式

Lexical Scope就是在写代码的时候,定义函数的时候创建的作用域!

而动态作用域是在runtime时,函数被调用的地方的作用域!

实际上 dynamic Scope是 this关键字的近亲。这会在this & Object Prototypes系列讲解。

第二章,lexical scope是这方面的法则:Engine如何查询一个变量,在哪找到这个变量!

关键特征就是lexical scope是定义在author-time,打代码的阶段。(并不使用eval())

最后: this关键字关心一个函数如何被调用,这证明了this机制和动态作用域的相关性!



You Don't Know JS: Scope & Closures (附加:Lexical/dynamic作用域)

原文地址:https://www.cnblogs.com/chentianwei/p/9742750.html

时间: 2024-10-10 00:17:11

You Don't Know JS: Scope & Closures (附加:Lexical/dynamic作用域)的相关文章

You Don't Know JS: Scope & Closures (第4章: Hoisting)

Chapter4: Hoisting 变量附加到哪个层次的scope,由它们在哪里和如何声明(let, var)来决定. Function scope/Block scope都有相同的法则:任何变量在一个scope内声明,则这个变量附加到这个作用域上. 但有一个细节问题:当声明declarations出现在一个作用域中的不同的位置的时候,scope附加如何与declarations协作? Chicken or The Egg? temptation: a strong desire to hav

You Don't Know JS: Scope & Closures(翻译的试试)

Chapter 1: What is Scope? 第一章:什么是作用域 One of the most fundamental paradigms of nearly all programming languages is the ability to store values in variables, and later retrieve or modify those values. In fact, the ability to store values and pull value

You Don't Know JS: Scope & Closures (第3章: 函数 vs 块作用域)

第二章,作用域由一系列的bubbles组成.每一个都代表了一个container或bucket,装着被声明的identifiers(variables, functions).这些bubbles相互嵌套.这种嵌套是在开发阶段写完的. 什么制造了一个新的bubble? 只是函数吗?其他的JS结构可以创建bubbles of scope吗? Function Vs. Block Scope Scope From Functions 探索函数作用域和它的暗示implications. 函数作用域内的所

js 和php 互操cookie 作用域

$.cookie("testcookie", JSON.stringify(data), {       path : '/',       expires : 0      }); //php代码 setcookie("testcookie",time()-3600,); js 和php 互操cookie 作用域,布布扣,bubuko.com

angular js 指令的数据传递 及作用域数据绑定

<div my-directive my-url="http://google.com" my-link-text="Click me to go to Google"></div> angular.module('myApp', []) .directive('myDirective', function() { return { restrict: 'A', replace: true, scope: { myUrl: '@', //绑定

js中的执行环境及作用域

最近在面试时被问到了对作用域链的理解,感觉当时回答的不是很好,今天就来说说js中的作用域链吧. 首先来说说js中的执行环境,所谓执行环境(有时也称环境)它是JavaScript中最为重要的一个概念.执行环境定义了变量或函数有权访问的其他数据 ,决定了它们各自的行为.而每个执行环境都有一个与之相关的变量对象,环境中定义的所有变量和函数都保存在这个对象中. 理解了执行环境,现在就看看什么是作用域链吧.每个函数都有自己的执行环境,当代码在执行环境中执行时,就会创建变量对象的作用域链.作用域链保证了对执

JavaScript的作用;JS常见的三种对话框;==和===的区别;函数内部参数数组arguments在函数内部打印实参;JS的误区:没有块级作用域

JS:客户端(浏览器)脚本语言 弱类型 基于原型 事件驱动 不需要编译(直接运行) JS的作用:表单验证,减轻服务端的压力 添加页面动画效果  动态更改页面内容  Ajax网络请求 (一)常见的对话框 alert()对话框:该方法是window对象的方法,在浏览器中弹出一个对话框(该方法没有返回值)  prompt()对话框:2个参数,一个是浏览器提示信息,第二个是默认的输入框的值,返回值就是输入框的信息  confirm()对话框:在浏览器弹出一个对话框,用户只能选择正确或者取消,返回值对应为

自己编写jQuery动态引入js文件插件 (jquery.import.dynamic.script)

这个插件主要是结合jquery或者xhr异步请求来使用的,它可以把已经引入过的js文件记录在浏览器内存中,当下次再引入相同的文件就忽略该文件的引入. 当你用$.load("dir/my-page.jsp"); 或xhr.request("server/to-my-page");等异步请求加载html页面的时候,在页面中导入js文件用本插件进行引入的话, 那么其他请求的页面中也导入了和前面页面相当的js文件的情况下,那这些js文件就不需要重新引入.插件会自动忽略之前已

[js]js栈内存的全局/私有作用域,代码预解释

js代码如何执行的 浏览器提供执行环境: 全局作用域(提供js执行环境, 栈内存) --> 执行js需要预解释 - 带var : 提前声明 - 带function关键字的: 提前声明+定义 js中的栈内存(对应全局/私有作用域)和堆内存 <script> // 基本: num str boollen null undefied // 引用: [] {} \^$\ Date var num = 12; var obj = {name: "maotai", age: 22