标签:为什么 存在 规则 style 理解 实现 优先 cal 定义
var scope = ‘global scope‘; function checkScope() { var scope = ‘local Scopr‘; function nest() { return scope; } return nest() } checkScope()
checkScope()函数声明了一个局部变量,并且定义了函数nest(), 函数返回了这个局部变量的值,最后将nest()的结果返回。我们应当非常清楚为什么调用checkScope()函数返回的是local scopr。现在我们对代码稍作改动。
var scope = ‘global scope‘; function checkScope() { var scope = ‘local Scopr‘; function nest() { return scope; } return nest } checkScope()()
在这段代码中,我们将括号已到了checkScope()函数的后面。checkScope()返回的仅仅是一个函数对象,而不是直接返回结果。那么我们在定义函数的作用域外部调用这个嵌套的函数对象会发生什么事情呢?嵌套函数nest()定义在这个作用域里面,其中scope是局部变量。而在函数内部局部变量的优先级是高于全局变量的,所以不管在何时何地执行该嵌套函数时,返回的都是local Scopr。
标签:为什么 存在 规则 style 理解 实现 优先 cal 定义
原文地址:https://www.cnblogs.com/xiaogua/p/10486910.html