这里有新鲜出炉的 Javascript 教程,程序狗速度看过来!
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
这篇文章主要介绍了 js 函数调用的方式, 需要的朋友可以参考下
Js 函数调用的方式有如下几种情况:
(1) 具名函数直接调用
- function foo()
- {
- }
- foo();
(2) 匿名函数通过引用来调用
- fooRef = function()
- {
- }
- fooRef();
(3) 没有引用的匿名函数调用 1
- (function()
- {
- }());
(4) 没有引用的匿名函数调用 2
- (function()
- {
- })();
(5) 没有引用的匿名函数调用 3
- void function()
- {
- }();
图 1.1,图 1.2 表明了这两种表达式的运算过程是不一样的,图 1.1 中是用强制运算符使函数调用运算得以执行,图 1.2 中则用强制运算符运算 "函数直接量声明" 这个表达式,并返回一个函数自身的引用,然后通过函数调用运算 "()" 来操作这个函数引用。而上面的最后一个匿名函数调用 void function(){}(); 则用于调用函数并忽略返回值,运算符 void 用于使其后面的函数表达式执行运算。如果我们不使用"void"与强制运算"()", 代码能否执行:
(1)function(){}()// 使用''()" 强制调用
(2)function(){}();// 使用";" 来执行语句
脚本引擎会认为 function(){} 是函数声明, 从而通不过语法检测, 代码被解析成这样:
function(){};();
function(){} 被作为声明被解释,而 "();" 被独立成一行来解释,因而会报语法错误, 为什么知道是 "();" 导致的错误?我们改成如下代码:
function(){}(1);
这样就会被引擎解释为:
fucntion(){};
(1);// 单值表达式
因而通过了语法检测...
(adsbygoogle = window.adsbygoogle || []).push({});
来源: http://www.phperz.com/article/17/0628/276089.html