关于 js 的困惑,求解释

我最近在看别人的代码,感觉云山雾罩的,有些不太理解,烦大伙解释一下,因为网上太笼统了,解释不明白。麻烦了

(function($,owner) {
     // 方法
     owner.back = function(){
          
     }
})();



第一个疑惑:请问 owner.back 这个方法是可以全局调用的吗?比如这个方法是写在 app.js 中的,我想在其它 js 中也用这个 back 方法,是不是直接可以用就可以了?

(function($,owner) {
     // 方法
     owner.back = function(){
          
     }
})(window.Base64 = {}));



第二个疑惑:window.Base64 = {})放在这个位置是什么意思,起什么作用呢?谢谢!关于这个尾部()在网站搜索的是如果添加说明是一个表达式,如果是个表达式,那么这个表达式是做什么用的呢?

而且有多种写法:

(function($,owner) {
     // 方法
     owner.back = function(){
          
     }
})(mui, window.storage = {}));


(function($,owner) {
     // 方法
     owner.back = function(){
          
     }
})(mui, window.menu = {}));


(function($,owner) {
     // 方法
     owner.back = function(){
          
     }
})(window.secret = {}));



谢谢!

阅读 1.8k
2 个回答
(function($,owner) {
     // 方法
     owner.back = function(){
} // 给传入的 owner 设置 back 属性为一个匿名函数
})();

 // 没有给参数, owner 为 undefined
(function($,owner) {
     // 方法
     owner.back = function(){} // 这里 owner 为 window, 给 window 设置属性为全局属性,其他地方直接调用
})(window.Base64 = {}));

 // 这里如果没错,应该是这样 })($, window.Base64 = {}))

表达式会返回自己的运算结果

比如 var a = 1 + 1; //2function a(){};a();//undefined

所以window.secret = {}的意思是为window.secret赋值{},并把window.secret返回出去

如果下面的代码结构仅仅是你贴出来的这样

(function($,owner) {
     // 方法
     owner.back = function(){
          
     }
})(window.secret = {}));

那么意思就是为window.secret赋值{},并把window.secret传递给参数$,但是这里会报错,因为owner为undefined

同理,你可以试着理解上面两个带参数mui的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题