javascript里面的定义问题
发布网友
发布时间:2022-05-15 20:16
我来回答
共4个回答
热心网友
时间:2022-05-15 21:45
这种写法叫立即执行函数。一般我们定义一个函数,如:
function A(){
alert('s');
}
这个函数不会执行,如果需要定义完一个函数,马上执行。就要写成这样的:
(function A(){alert('s');})();
最后面的小括号表示调用的意思,函数被一个括号包裹起来表示这是一个整体,如果没有这个括号,js引擎可能以为这个是函数声明。这种写法并不是唯一的。
!function A(){alert('s');}();
-function A(){alert('s');}();
+function A(){alert('s');}();
~function A(){alert('s');}();
这些都是,前面的符号只要告诉js引擎这一行是一个表达式,而不是函数声明都可以。
var A=function(){};
function A(){}
这两种写法还是有区别的,解析的顺序不同。js永远先解析声明式函数,然后再解析var声明的变量。还是以上面的写个例子:
//如果这里调用A();肯定是声明式函数执行,弹出2。如果没有声明式函数,则报错。
var A=function(alert('1')){};
//如果这里调用A(),弹出1。var声明的变量会覆盖声明式函数。
function A(){alert('2')};//永远先解析追问非常感谢你的回答,我明白了,
热心网友
时间:2022-05-15 23:03
如果不跟 后面的括号的话 db 就是一个 函数(function)
而加上括号的话,就是一个 执行会返回结果值,而不是一个function
这么做的目的是为了 将
function(key, val) {
if (val === undefined) { return data[key] } // get
else { return data[key] = val } // set
}
这个函数隐藏起来,因为这个函数,没有方法名,所以你在这个方法之外就调用不到这个函数了
热心网友
时间:2022-05-16 00:38
这是一个封装的过程- -
var xxx = (function(){xxxx})();
和
var xxx = function(){};
的区别是,第一个var xxx= (function(){xxxx})();会执行一次该括号内部的这个函数,并且把返回值赋值给左边的变量
第二个var xxx = function(){};是直接把右边的这个函数赋值给左边的变量,和直接定义
function xxx(){}这种写法没实际意义上的区别追问谢谢这种写法有什么名称吗,我想搜一下这方面的资料
追答我也不清楚这个术语叫什么- -
反正这个写法是为了封包,不让data这个变量让外部访问到,又不能让data这个变量消失
所以就用到这种写法了,因为在他返回的这个函数中用到了这个data变量,所以这个data不会消失,但是这个data是在外部本身这个函数内部声明的,所以在外部访问不到。
热心网友
时间:2022-05-16 02:29
就是执行这个函数的,db等于function()的返回值。也就是return的东西追问谢谢你的回答,不用括号行吗,用了一对括号后面还用一对,没看到过这么写法,有什么这方面的资料吗,
追答db的实际上想要指代的是 function(key, val),不使用 达不到这个要求。