标签:div script java button log avl title www builder
function(){} 可以理解为它是一个定义的方法 只是让浏览器知道 有这么一个存在 并不会执行 执行时要带()
一般我们都会这样子写
var a=function(){} ; a();
如果要整合写的话 那么就是 (function(){})() 这样子就相当于 var a=function(){} ; a(); 定义了方法 并且执行了
如果你不写function 前面的括号 那么对于浏览器来说 你只是声明定义了一个方法 并不会执行 而且这个方法还是错误的(这里暂且不提这些了)
其实最外层的()就相当于 eval()函数 来执行括号以内的逻辑代码 可以百度一下JavaScript eval() 函数
那我们现在回头看(function(){}())
(function(){}()) 其实可以这样子看 我只是声明定义了一个方法 并不会执行 而且这个方法还是错误的 编译不会通过 但是我用eavl() 来执行就可以了
所以 (function(){}()) 就等与 eavl(function (){}()) 等于(function(){})() 等于 var a=function(){} ; a(); 其实都是声明了 在使用
有兴趣的话 可以自己试一下 这是我写的测试代码
<html>
<head>
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
<title>hello builder</title>
<script type="text/javascript">
function test(){
var person={};
(function(p){
var name="";
p.SetName=function(b){
name=b;
}
p.GetName=function(){
return name;
}
}(person))
person.SetName("撒娇的小熊")
alert(person.GetName())
}
function tests(){
var person={};
eval(
function(p){
var name="";
p.SetName=function(b){
name=b;
}
p.GetName=function(){
return name;
}
}(person))
person.SetName("撒娇的小熊")
alert(person.GetName())
}
</script>
</head>
<body>
<input type="button" onclick="test()" value="button"/>
<input type="button" onclick="tests()" value="button"/>
</body>
</html>
弱弱说一句 写这些代码 是为了了解闭包的
大家有兴趣想了解闭包 可以去查阅
https://www.cnblogs.com/wangfupeng1988/p/3977924.html
写的很好
JavaScript (function (){}()) 与(function(){})()
标签:div script java button log avl title www builder
原文地址:https://www.cnblogs.com/sajiao/p/9260077.html