【发布时间】:2015-10-17 04:33:21
【问题描述】:
我最近一直在尝试学习 javascript 并且有几个问题。
创建函数表达式时:
var greet = function(){
console.log('Hi');
}
这是创建一个函数对象并让变量“greet”指向内存中的那个函数对象吗?
我的第二个问题,如果你有这样的功能:
function log(a){
console.log(a);
}
然后你调用那个函数:
log(greet); //greet is the function expression declared above.
所以我知道,当创建一个函数对象时,该对象有两个属性。名称(如果提供,否则为匿名)和一个代码属性,该属性存储包含在函数括号内的代码。现在我对日志函数中的参数“a”在函数对象中的附加位置有点困惑。 “a”只是函数对象 log 的另一个属性,它只是指向传递给 log 函数的任何内容的内存地址吗?在这种情况下,它是一个名为 greet 的函数表达式。任何输入将不胜感激。谢谢!
【问题讨论】:
-
第一个问题:是的。这也是函数声明中发生的事情,它是 when 发生的事情会有所不同。
-
@Typo 该帖子无助于回答我的问题。我指的是完全不同的东西。
-
在 comp.lang.javascript 常见问题解答中尝试以下文章:Javascript Closures。虽然它使用 ECMAScript ed 3 语言,但它全面解释了如何创建执行上下文以及如何在作用域链和对象
[[Prototype]]链上解析标识符。请记住,从那时起,条款发生了变化,但一切都以完全相同的方式发生。
标签: javascript