函数表达式本身不能将名称分配给另一个值
Function Expression itself cannot assign Name to another Value
在下面的代码中:
(function (){
function test(){};//"function"
var test;//"undefined"
var printTest = typeof test;
document.write(printTest);
})();
printTest将显示"function"而不是"undefined",这是有道理的,因为根据我的理解,任何变量声明都会被"提升"到执行上下文的顶部(在本例中是函数执行上下文)。这使得函数声明"test()"成为稍后出现在当前执行上下文中的声明。现在考虑一下这段代码,我实际为var声明"var test=1"赋值。
(function (){
function test(){};
var test=1;//assign value to a variable here
var printTest = typeof test;
document.write(printTest);
})();
然后printTest现在显示"数字",这意味着执行上下文现在保持不同的顺序。有人能解释一下这里到底发生了什么吗?
吊装将实际赋值与变量声明分离。它真正做的是:
(function (){
var test, printTest;
test = function (){};
test = 1;//assign value to a variable here
printTest = typeof test;
document.write(printTest);
})();
var test
仅表示"任何称为测试的内容都应在本地确定范围"。它是未定义的,只是因为你没有给它赋值(除了你有function test(){};
,这就是为什么你得到function
而不是undefined
)。
在第二个例子中,function test(){};
仍然为它分配一个函数,但随后var test=1;
用1
覆盖它。您在之后使用typeof
,您将1
分配给它,因此它会报告它是一个数字。
相关文章:
- 将节点数据分配给另一个变量jstree
- 为什么在Javascript中将一个对象分配给另一个变量也会更改初始对象
- 如何在javascript中将变量的值分配给另一个方法
- 使用 JQuery 从另一个元素的 id 为图像分配属性
- 如何将行数计数分配给另一个值,该值稍后可在Protractor中的测试用例中使用
- 在Javascript严格模式下,您可以将参数分配给另一个变量
- JAVASCRIPT:分配给另一个方法的方法与第一个方法的变化值相同,改变第二个方法
- Meteor - 将 mongodb 查询分配给变量并将其插入到另一个集合
- jQuery:如何从一个元素捕获事件并将其分配给另一个元素
- 将一个元素的所有属性分配给另一个元素
- AngularJS:获取一个文本区域的值及其 ID 并将其分配给另一个 textare
- 将对象分配给另一个对象并保留原始数据
- jsp-如何将输入值分配给我想稍后使用的另一个变量
- 在 JQuery 自动完成中将一个文本框选定值分配给另一个文本框选定值
- 将一个元素的“分配 ID 值”更改为另一个元素的数据属性
- 将多个图像(文件)从一个文件输入分配给另一个文件输入 - 上传
- 当我将$scope分配给另一个变量并更改新变量上的监视值时,不会触发角度 $scope.$watch
- 强制单向绑定,同时将变量分配给另一个变量
- 为什么要将其分配给另一个变量
- 为变量(而不是对象属性)分配另一个变量的任何方法's值