JavaScript 百分网手机站

 javascript中(function{})()写法解析

时间:2018-06-04 12:44:15 JavaScript 我要投稿

 javascript中(function{})()写法解析

  javascript 中(function{})()这种写法什么意思?

  最近在整理javascript 学习,发现这个问题了 ,在网上发现这么个解释 最清楚 最明白 ;

  (function(){})()

  相当于先定义 function xx(){},后调用 xx();

  ()是最高优先级的,所以先执行function(){},

  这个定义了一个匿名函数,等于xx=function(www.diannao114.cn){}

  接着就是调用xx()了;

  给个例子

  JScript codefunctionf1(a)

  { alert(a);

  functionf2(a)

  { returnfunction(){ alert(a); }

  }这里的var x=f2 就等于把函数传递给了f2,然后要执行这个函数,就必须加() 也就是x();

  也就是f2()

  还是(function f2(a){

  return function(){

  alert(a);

  另外还有一个问题就是命名空间的问题

  YY = YY||{};---声明一个叫YY的命名空间(定义一个全局的变量)

  (function() {

  YY.Lang=function() {------声明一个叫YY.Lang的命名空间(通过全局变量的增加属性的方式把闭包里的对象传到全局变量中,实现代码封装的效果)

  isUndefined: function(o) {

  return typeof o === 'undefined';

  isString: function(o) {

  return typeof o === 'string';

  ---调用方法

  alert(YY.Lang.isString('test me'));

  这时候就有人不明了,楼上为什么要加(function() { 和)(); 最外面的这两行,有什么用啊?

  JScript codeYY=YY||{}; //---声明一个叫YY的'命名空间(定义一个全局的变量)

  function() { YY.Lang=function() {

  //------声明一个叫YY.Lang的命名空间(通过全局变量的增加属性的方式把闭包里的对象传到全局变量中,实现代码封装的效果) isUndefined:function(o) {returntypeofo==='undefined'; },

  isString:function(o) {returntypeofo==='string'; } }; }

  //---调用方法

  alert(YY.Lang.isString('test me'));

  疑问在这: 注释掉这两行有什么不一样的呢?不就是申明吗,为什么要用()()执行一下啊?

  答:

  (function(){})()意思是立即执行前一个括号里的function,相当于是一个匿名函数;由于里面的代码的执行,定义了YY.Lang这个对象,所以可以执行alert(YY.Lang.isString('test me'));调用isString方法。

  但是,如果按照你写的

  functionaa(){..};//只是定义了一个叫aa的函数,但是并没有执行

  alert(YY.Lang.isString('test me'));//执行的时候会报找不到isString的方法。

  这么写有什么好处??

  (function{})()的写法有个好处,就是能很好的利用javascript的变量的可见范围为执行脚本时节省空间。例如以下写法1和写法2达到的目的是一样的,但是写法1的由于a变量的可见范围只是在匿名函数体内,所以a在执行完这个匿名函数后就释放空间了。但是写法2会一直存在该页面中。

  写法1:

  JScript code(function(){vara=2; alert(a); })();

  写法2:

  JScript codevara=2; alert(a);

【 javascript中(function{})()写法解析】相关文章:

1.JavaScript中Function函数

2.JavaScript中“+”的解析

3.javascript中Function类型详细介绍

4.浅析javascript中function 的length属性

5.javascript之Function对象学习小结

6.javaScript中的原型解析

7.JavaScript Scoping Hoisting解析

8.IE与Firefox在JavaScript上的不同写法小结