为什么以下工作:
function outsideFunction() {
return {
insideFunction: insideFunction
}
function insideFunction() {
...stuff
}
}
Run Code Online (Sandbox Code Playgroud)
不
function insideFunction() {
...stuff
}
Run Code Online (Sandbox Code Playgroud)
同样的
var insideFunction = function() { ...stuff }
Run Code Online (Sandbox Code Playgroud)
哪会导致var insideFunction被提升到顶部?在对象声明中使用时不应该insideFunction返回undefined?
我可以用对象做同样的事情吗?换句话说,我可以这样做:
return {objectName: objectName}
var objectName = {}
Run Code Online (Sandbox Code Playgroud)
这是因为吊装 - 在您宣布之前可以访问的东西,因为所有声明都"悬挂"到您的范围顶部.你说:
不
Run Code Online (Sandbox Code Playgroud)function insideFunction() { ...stuff }同样的
Run Code Online (Sandbox Code Playgroud)var insideFunction = function() { ...stuff }
号按了MDN文件:
JavaScript中的函数声明正在提升函数定义.您可以在声明之前使用该功能:
Run Code Online (Sandbox Code Playgroud)hoisted(); // logs "foo" function hoisted() { console.log("foo"); }请注意,函数表达式不会被挂起:
Run Code Online (Sandbox Code Playgroud)notHoisted(); // TypeError: notHoisted is not a function var notHoisted = function() { console.log("bar"); };
最后问题:
我可不可以做:
Run Code Online (Sandbox Code Playgroud)return {objectName: objectName} var objectName = {}
再一次,没有.虽然objectName将被声明(因此您避免参考错误),但它返回时的值将是undefined.
| 归档时间: |
|
| 查看次数: |
52 次 |
| 最近记录: |