猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
作用域的问题
这里为什么会报错,bindEvent里的box1不是会沿着作用域链往上搜索吗?
蝴蝶不菲
浏览 459
回答 1
1回答
精慕HU
JS作用域基本都是词法(静态)作用域,也就定义的时候就确定了能访问到的变量。(this是动态作用域)box1在init()这个函数作用域(词法作用域的一种)内定义,而bindEvent不在init内定义,所以他们的作用域链不同。你可以改成这样:function init() { const box1 = new Box(); // box1在init的作用域 function bindEvent() { // bindEvent在init的作用域 box1; // 不在bindEvent里定义,去作用链上的init的作用域里找,找到了 } bindEvent();}或者这样:var box1; function bindEvent() { box1; // ok}function init() { box1 = new Box(); bindEvent();}或者直接把box传给bindEvent()。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
JavaScript
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续