<js>
alert();
function test(){
}
test();
这样的话,进这个页面也会执行这个方法的。
</js>
其实不要被“函数表达式”的函数两字束缚了,其实就是“表达式”,这样一来就会好理解了。在表达式的前面加个逻辑运算符(比如!取反)或数学运算符(比如+),js就会认为你是要获取表达式的值,这样它就会去运行这个表达式,这样函数就会被执行了。比如说有下面这个函数声明:
function abc(){return true}
那么执行 !abc() 时js就会先去调用abc函数,然后再把返回值取反,这个好理解吧?
而现在把abc直接替换为匿名函数:
!function(){return true}()
js也一样会把!后面的部分当作一个表达式去运行,然后把取回的值进行取反,这个过程中匿名函数就会自动运行了。
其实 (function(){})(); 和 (function(){}()) 能够自执行的原理也是一样的,我加黑的那对括号其实也是运算符(就好比小学数学中的 (2+3)×4 中的括号),这样js就会把括号里的部分当作表达式来处理了。
所以,说到底函数的自执行其实并不是js的有意为之,而是一种无心插柳的行为,说是旁门左道也不为过,但它确实可以帮我们实现一些特殊的要求,所以就慢慢变成一种正经用法了。
方法1 内部用了var 表示内部变量 执行完一次后会自动释放;方法2 内的变量cc不能与方法1重名;
示例代码如下 测试可以
<html xmlns=">当点击按钮的时候,是click事件的一个触发。
$("按钮")click(function(){
//js方法的调用
otherfunction();
});
//单独的js方法
function otherfunction(){
//todo js文件
}
综合上边来说,你需要按钮,以及一个单独的js方法。
分为两种情况:
一种是js方法和你触发事件的方法在一个js文件里边,那么你就可以像上边那个例子直接调用。
一种是你的js方法和触发事件不在一个js文件里边。那么你可以在js文件里边采用命名空间的方法去调用。具体命名空间的使用请自行百度。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)