Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
327 views
in Technique[技术] by (71.8m points)

帮忙解决几个js的问题

1. 两个a,b两个js文件,a里面写的是闭包的方法,b文件里怎么去调用,或者说这两个文件怎么进行数据通信(就是es5中的使用)

2.

var a = 1;
delete a;//false
alert(a)//1
// -----------------------------------
a = 1;
delete a;//true
alert(a);//d is not defined
// -------------------------------------
eval('var a = 1');
delete a;//true
alert(a);//d is not defined

上面这三段代码的结果,为什么用var定义和后两个的结果不一样?这怎么理解?

3. 想问问模块化中的require与import的区别,他们的运行机制是怎样的?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

从1和3这两个问题可以看出,你对模块化的了解还比较薄弱,因此建议你先去学习一下模块化的使用,完了之后,这两个问题自然就不是什么问题了。建议先学习requirejs,文档地址如下
http://www.requirejs.cn/

第二个问题,使用var声明的变量,都存储在执行上下文的变量对象中。而直接a = 1实际上是给window增加一个属性,等同于window.a = 1。所以这两句话从根本上来说是不同的。

变量对象中保存的所有属性,都不能被delete删除,而window的普通属性可以被删除。

至于eval这个函数有点特殊,我只知道它执行时会生成一个叫做调用上下文的东西,具体怎么回事我也没搞清楚,因为毕竟用的不多,很多地方都在说要避免实现它 ~ ~


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...