javascript自执行那个代码有好几种写法,有的写在整个都在一个括号中,还有类似的几种写法,能否帮总结一下,有点乱。
就是下面这个:
(function(){})()
有这样一个例子:
(function(){
$("#backtop").click(function(){return $("body,html").animate({scrollTop:0}),!1});
})();
上面这个语句有什么语法错误么?
编辑器webstorm把最后那个逗号处于选中状态,多数时候,被webstorm选中,一般是有点什么问题,但不知道是什么问题,麻烦帮解答一下。
我的理解是,你用function(){}这样的是函数的声明,是不能执行的,想要执行就要变成表达式,然后就用各种方法让函数的声明变成表达式的样子,比如在函数外面加个括号,就是(function(){})()的样子,再或者加个运算符比如~function(){}(),就是这样。
函数自执行的方式,我见过的有三种
(function() {})();
+function() {}();
!function() {}();
至于那段代码有没有错误,我表示看不懂,从来没见过
return xxxx, !1
这样的写法。
自执行函数 那个 ?
(function(){}())
(function(){})()
「Javascript 代码」概念很宽泛。应该指出细节,如闭包、匿名函数等
没有啊,那个匿名函数只会去调用一次 因为是匿名的,也没有任何指向。function关键字定义函数的时候本来就会返回一个函数的 就像func=function(){} 这样是返回了一个函数。你再使用()去调用而已。
这是我初学JavaScript自己总结的,也学了没几天,要是有错误,和理解不到的地方,欢迎大家指出来,我改改,也学习!
/**事件加载说明:
◆◆第0种:怎么在【整个页面】添加事件?
1.可以用在 <标签>内加载事件;
<body onkeyup="FunctionName(event)" onmousedown="FunctionName(event)">
2.如果想在<script>标签里加事件;
直接把 document 当 body 体;
document.onmousedown = FunctionName;
document.onkeyup = FunctionName;
3.jQuery 写法:★★注意要是之后的 属性 或者 方法 是JavaScript 原生态语法,需要转换一下,就是加个[0];
$("body").on("mouseup" , FunctionName);
$("body").on("keyup" , FunctionName);
或
$("*").on("mouseup" , FunctionName);
$("*").on("keyup" , FunctionName);
或
$(document).on("mouseup" , FunctionName);
$(document).on("keyup" , FunctionName);
!! $("body") 和 $("*") $(document) 区别:
$("body")
body 体;
$("*")
全部标签 ,包括 <html> , <?php >;
$(document)
整个页面;
◆◆第1种:<标签>内加载事件
<标签名 on事件= " 事件处理程序 " >
◆1.1 执行动作:
<div onclick="document.bgColor='red'">aaa</div>
◆1.2 执行 function
方法:1.2.1
<div onclick="函数名()">aaa</div>
<div onclick="BIANHONG()">aaa</div> //这里双引号""加不加都行;
<script>
function BianHong()
{document.bgColor="red"}
</script>
◆◆第2种:统一写在 <script> 里:
◆2.1 直接用 ID 添加事件:
这是一种【【特例】】,只有用ID作为事件依据的时候才行;
<div id="one">aa</div>
<script>
one.onclick=function(){
document.bgColor='red';}
</script>
◆2.2 用DOM对象添加事件
document.【DOM捕获函数】.【("类名ID或标签")】.【激活事件】=function(){.. .}
★注意,这里的 function 没有【函数名】
这个和上一个一样,只不过把 one 改成了 document.getElementById("one");
当然也可以换成 document.getElementsByName("?")[?] 等其他DOM方法;
<div id="one">aa</div>
<script>
document.getElementById("one").onclick=function(){
document.bgColor='red';}
</script>
◆2.3 把事件和动作分开写:
document.【DOM捕获函数】.("【类名ID或标签】").【激活事件】=【函数名function实体】 //★★★★注意无括号
function 【函数名】(){.....}
这个和上一个基本一样:
就是把 function 定义成了一个变量:
<div id="one">aa</div>
<script>
document.getElementById("one").onclick=BIANHONG; //★★★★注意无括号
function BIANHONG()
{document.bgColor='red';}
</script>
/*补充:
函数名加括号BIANHONG()就是调用返回值:
var a = BIANHONG();
意思是先运算 function BIANHONG(){.. .},然后再把结果赋值给 a ;
函数名不加括号BIANHONG就是只是复制给函数;
var a = BIANHONG;
意思是定义了一个 和 a 一模一样的函数;*/
◆◆第3种:在 <script> 里利用 jQuery 添加事件:
格式1:
$( "【jQuery选择器】" ).【激活事件】( 【函数名或function实体】 )
格式2:
$( "【jQuery选择器】" ).on( "【激活事件】" , 【函数名或function实体】 )
和上一个一模一样,不过 采用 jQuery 格式,写法一点都不一样:
别忘了导入 jQuery库;
jQuery 语法 也不一样;
格式1:
<div id="one">aa</div>
<script>
function BIANHONG()
{document.bgColor='red';}
$("#one").click(BIANHONG);
</script>
格式2:
<div id="one">aa</div>
<script>
function BIANHONG()
{document.bgColor='red';}
$("#one").on("click",BIANHONG);
</script>
把事件和function 写在一起:【不用看,因为不好改】:
<script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script>
<div id="one">aa</div>
<script>
$("#one").click(function(){$("body").css("background-color","red");});
</script>
*/