您的位置:首页 > Web前端 > JavaScript

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

2016-07-07 00:00 337 查看
摘要: 经常看到js代码中这样写(function(){...})(),感觉很怪,但不知道怎么执行的,写在貌似懂了点,记录一下

平时我们在<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),其实也是可以的,是不是一个道理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript 初始化