JavaScript中怎么实现函数本身的作用域

今天就跟大家聊聊有关JavaScript中怎么实现函数本身的作用域,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

函数本身也是一个值,也有自己的作用域。它的作用域与变量一样,就是其声明时所在的作用域,与其运行时所在作用域无关。

JavaScript中怎么实现函数本身的作用域

vara=1
varx=function(){
console.log(a)
}

functionf(){
vara=2
x()
}

f()

上面代码中,函数x是在函数f的外部声明的,所以它的作用域绑定外层,内部变量a不会到函数f体内取值,所以输出1,而不是2。

总之,函数执行时所在的作用域,是定义时的作用域,而不是调用时所在的作用域

varx=function(){
console.log(a);
};

functiony(f){
vara=2;
f();
}

y(x)
//ReferenceError:aisnotdefined

上面代码将函数x作为参数,传入函数y。但是x是在函数y体外声明的,作用域绑定外层,因此找不到函数y的内部变量a,导致报错。

同样的函数本内部声明的函数,作用域绑定在函数体内部

functionfoo(){
varx=1;
functionbar(){
console.log(x)
}
returnbar
}
varx=2
varf=foo()
f()//1

箭头函数的作用域,是和父级上下文绑定在一起的

varobj={
id:1,
show:()=>{
console.log(this.id)
}
}


obj.show()//undefined

上面代码show函数是一个箭头函数,其this指向父级,而父级是一个顶级对象,window,window.id没有定义,所以返回undefined

varobj={
id:2,
show:function(){
return()=>{
console.log(this.id)
}
}
}

obj.show()()//2

看完上述内容,你们对JavaScript中怎么实现函数本身的作用域有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注恰卡编程网行业资讯频道,感谢大家的支持。

发布于 2021-06-13 23:17:42
收藏
分享
海报
0 条评论
181
上一篇:CSS中类名的使用示例 下一篇:C语言怎么实现一个拼图游戏
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码