【发布时间】:2018-07-02 20:37:08
【问题描述】:
let a = () => (
{
name:"Anna",
func: () => console.log(this.name)
}
)
let b = () => (
{
name:"Brian",
func: function(){ console.log(this.name) }
}
)
let c = function(){
return(
{
name:"Charlie",
func: function(){ console.log(this.name) }
}
)
}
let d = function(){
return(
{
name:"Denny",
func: () => console.log(this.name)
}
)
}
这 4 个函数具有混合和匹配的函数语法。调用嵌套函数时,func:with箭头函数返回空白。
a().func() // returns blankb().func() // returns "Brian"c().func() // returns "Charlie"d().func() // returns blank
我以为箭头函数保留了“this”的范围?这种行为似乎与我的想法相反。箭头函数何时超出范围?
【问题讨论】:
-
this 有帮助吗?
-
如果你不是
console.log(this.name);你是console.log(this, this.name)- 那么你会看到this实际上是什么,而对于 @987654331 @ 和d理解为什么输出是blank而不是undefined即因为window.name是一个东西 -
我打算把它编辑成一个可运行的 sn-p,但显然
this.name在编辑器中返回了一个guid,并不能真正证明这一点.....跨度>