亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

JavaScript 函數(shù)定義

定義函數(shù)

在JavaScript中,定義函數(shù)的方式如下:

function abs(x) {
? ?if (x >= 0) { ? ? ? ?return x;
? ?} else { ? ? ? ?return -x;
? ?}
}

上述abs()函數(shù)的定義如下:

function指出這是一個函數(shù)定義;abs是函數(shù)的名稱;(x)括號內(nèi)列出函數(shù)的參數(shù),多個參數(shù)以,分隔;{ ... }之間的代碼是函數(shù)體,可以包含若干語句,甚至可以沒有任何語句。

請注意,函數(shù)體內(nèi)部的語句在執(zhí)行時,一旦執(zhí)行到return時,函數(shù)就執(zhí)行完畢,并將結果返回。因此,函數(shù)內(nèi)部通過條件判斷和循環(huán)可以實現(xiàn)非常復雜的邏輯。

如果沒有return語句,函數(shù)執(zhí)行完畢后也會返回結果,只是結果為undefined。

由于JavaScript的函數(shù)也是一個對象,上述定義的abs()函數(shù)實際上是一個函數(shù)對象,而函數(shù)名abs可以視為指向該函數(shù)的變量。

因此,第二種定義函數(shù)的方式如下:

var abs = function (x) {
? ?if (x >= 0) { ? ? ? ?return x;
? ?} else { ? ? ? ?return -x;
? ?}
};


在這種方式下,function (x) { ... }是一個匿名函數(shù),它沒有函數(shù)名。但是,這個匿名函數(shù)賦值給了變量abs,所以,通過變量abs就可以調(diào)用該函數(shù)。

上述兩種定義完全等價,注意第二種方式按照完整語法需要在函數(shù)體末尾加一個;,表示賦值語句結束。

函數(shù)是 JavaScript 語言的核心之一,其基本語法如下:

function functionName(arg0, arg1, ...) {
? ?statements
}

語法解讀

使用 function 關鍵字定義一個函數(shù)

function 關鍵字空格之后緊跟函數(shù)名

函數(shù)名字后面是一對小括弧,arg0, arg1 表示函數(shù)的參數(shù),參數(shù)之間以 , 號分隔,參數(shù)個數(shù)可以為 0-25 個(0即表示無參數(shù))。在沒有參數(shù)時,() 括號不可省略,超過25個的參數(shù),將被JavaScript忽略

{} 是函數(shù)體,里面是該函數(shù)要實現(xiàn)的功能語句

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>php中文網(wǎng)(php.cn)</title> 
    <script type="text/javascript">  
          function hello(name){
          document.write((name + ",你好!"));
        }
    </script>  
</head>  
<body>  
  <input type="button" onclick="hello('小明')" value="確定"/>
</body>  
</html>

函數(shù)表達式

JavaScript 函數(shù)可以通過一個表達式定義。

函數(shù)表達式可以存儲在變量中:

var x = function (a, b) {return a * b};

在函數(shù)表達式存儲在變量后,變量也可作為一個函數(shù)使用:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文網(wǎng)(php.cn)</title>
</head>
<body>
<p id="demo"></p>
<script>
var x = function (a, b) {return a * b};
document.getElementById("demo").innerHTML = x(6, 9);
</script>
</body>
</html>


函數(shù)提升(Hoisting)

在之前的教程中我們已經(jīng)了解了 "hoisting(提升)"。

提升(Hoisting)是 JavaScript 默認將當前作用域提升到前面去的的行為。

提升(Hoisting)應用在變量的聲明與函數(shù)的聲明。

因此,函數(shù)可以在聲明之前調(diào)用:

myFunction(5);

function myFunction(y) {
??? return y * y;
}

使用表達式定義函數(shù)時無法提升。


arguments

JavaScript還有一個免費贈送的關鍵字arguments,它只在函數(shù)內(nèi)部起作用,并且永遠指向當前函數(shù)的調(diào)用者傳入的所有參數(shù)。

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>php中文網(wǎng)(php.cn)</title> 
    <script type="text/javascript">  
       function foo(x) {
            alert(x); // 10
            for (var i=0; i<arguments.length; i++) {
            alert(arguments[i]); // 10, 20, 30
            }
          }
        foo(10, 20, 30);
    </script>  
</head>  
<body>  
</body>  
</html>


函數(shù)是對象

在 JavaScript 中使用?typeof?操作符判斷函數(shù)類型將返回 "function" 。

但是JavaScript 函數(shù)描述為一個對象更加準確。

JavaScript 函數(shù)有?屬性?和?方法。

arguments.length 屬性返回函數(shù)調(diào)用過程接收到的參數(shù)個數(shù):

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文網(wǎng)(php.cn)</title>
</head>
<body>
<p id="demo"></p>
<script>
function myFunction(a, b) {
    return arguments.length;
}
document.getElementById("demo").innerHTML = myFunction(4,7,3);
</script>
</body>
</html>


繼續(xù)學習
||
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文網(wǎng)(php.cn)</title> <script type="text/javascript"> function hello(name,age){ document.write("我叫" + name + ",今年" + age + "歲!"); } </script> </head> <body> <input type="button" onclick="hello('小明',18)" value="確定" /> </body> </html>
提交重置代碼