前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >javascript---(function(){})()

javascript---(function(){})()

作者头像
sucl
发布2019-08-07 15:14:23
2980
发布2019-08-07 15:14:23
举报
文章被收录于专栏:企业平台构建企业平台构建
代码语言:javascript
复制
平时我们在<script>中写代码是这样的:
//声明一个方法f1
function f1(){

}
f1();//运行这个方法

或者

var f2 = function(){

}
f2();
这样在页面元素加载前就执行这个方法。

那么把上面的写法转换下:
(function(){})()
相当于我们声明了一个匿名方法,在声明后直接就调用了该方法。

通常(function(){})(param)我们这样写会出错,因为此时我们是调用方法阶段,并不是声明阶段,所以param必须是有意义的,不然就是没定义

对比:
通常和$(function(){})对比,这个是jquery提供的初始化方法,在页面渲染完成后才会执行,相当于是调用一个回调方法,那么在使用
(function(){})()的时候确实页面没有渲染就执行了,因此要特别注意不要在方法体里引用页面dom元素,不然是会出错的,所以经常在
编写自定义插件的时候使用,比较典型的就是jquery ui。

再来看些这样的写法:
(function($){
  ...
})(jQuery)
其实上面这段代码在没有引入jquery的时候是错误的,因为jQuery是没有哦声明的,而jQuery在jquery中声明了。

很奇怪的写法:
(function (window, document, undefined) {  
  //   
})(window, document);  
理解是和上面一样的,但是undefined时个什么情况,网上找了一个解释:
undefined参数 
在ECMAScript 3中undefined是mutable的,这意味着可以给undefined赋值,而在ECMASCript 5的strict模式('use strict';)下是不可以的,解析式时会报语法错。
想了些,我们调用上面f1方法,写成f1(123),其实也是可以的,是不是一个道理 
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档