<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="JavaScript中Function Declaration与Function Expression 或者说 function fn(){}和var fn=function(){} 的区别" id="card1">
<p> 游客</p><p>
标题:JavaScript中Function Declaration与Function Expression 或者说 function fn(){}和var fn=function(){} 的区别<br/>
正文:<br/>
JavaScript是一种解释型语言，函数声明会在JavaScript代码加载后、执行前被解释，而函数表达式只有在执行到这一行代码时才会被解释。在JS中有两种定义函数的方式，1是：var aaa=function(){...}2是：function aaa(){...} var 方式定义的函数，不能先调用函数，后声明，只能先声明函数，然后调用。 function方式定义函数可以先调用，后声明。var func=function 和 function func()在意义上没有任何不同，但其解释优先级不同：后者会先于同一语句级的其他语句。即：{ var k = xx(); function xx(){return 5;}}不会出错，而{ var k = xx(); var xx = function(){return 5;}}则会出错。 我们来看一下： var p=function(){}(); 这段代码是什么意思。看了下面这几个例子后，大家就会一目了然了。 var p = function(){return 'abc';}();alert(p);//abcalert(typeof p); //string   var p = function(){return 111;}();alert(p);//111alert(typeof p); //number 现在明白了吧，其实就是定义了一个变量，这个变量是后面函数的返回值。 用Javascript 两大特点，也是JS引擎的实现必然导致的：1) 返回值。在JS引擎中，所有的语法，操作都有返回值，而且通常返回值是它本身或undefined。通常我们可以用&amp;quot;()&amp;quot;操作符，来获取当前句子的返回值(部分操作符不能用，如var)。例如：a=3;其实这行的返回值就是3，所以在a=b=3时，JS引擎就可以正确的执行下去，首先3赋值给b,然后当前的返回值3再赋值给a（而不是大家所认为的，先将3赋值给b，然后再将b赋值给a）。又例如函数var fun=function(){}<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=628&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=628&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=628&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=628&amp;Page=2">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=628">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=628">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>