為什么函數(shù)調(diào)用那里不加括號(hào)就沒有結(jié)果
<!DOCTYPE html>
<html>
?<head>
? <title> 事件</title>??
? <script type="text/javascript">
? ?function count(){
? ? ? ?
? ? //獲取第一個(gè)輸入框的值
var one=document.getElementById('txt1').value
//獲取第二個(gè)輸入框的值
var two=document.getElementById('txt2').value
//獲取選擇框的值
var sel=document.getElementById('select').value
//獲取通過下拉框來選擇的值來改變加減乘除的運(yùn)算法則
var result;
switch(sel)
{
case '+':result=parseInt(one)+parseInt(two);
break;
case '-':result=parseInt(one)-parseInt(two);
break;
case '*':result=parseInt(one)*parseInt(two);
break;
case '/':result=parseInt(one)/parseInt(two);
break;
}
? ? //設(shè)置結(jié)果輸入框的值?
? ? document.getElementById('fruit').value=result;
? ?}
? </script>?
?</head>?
?<body>
? ?<input type='text' id='txt1' />?
? ?<select id='select'>
<option value='+'>+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
? ?</select>
? ?<input type='text' id='txt2' />?
? ?<input type='button' value=' = ' onclick="count"/> <!--通過 = 按鈕來調(diào)用創(chuàng)建的函數(shù),得到結(jié)果-->?
? ?<input type='text' id='fruit' />? ?
?</body>
</html>
2020-03-03
例子說明:例1.
function init(){
??? 。。。。。。
}
window.onload = init;
例2:
function fun(){
??? return 5
}
var a=fun
var b=fun()
a是fun函數(shù),b是5
那么到底在使用一個(gè)函數(shù)時(shí)需不需要加上()呢?
函數(shù)只要是要調(diào)用它進(jìn)行執(zhí)行的,都必須加括號(hào)。此時(shí),函數(shù)實(shí)際上等于函數(shù)的返回值或者執(zhí)行效果,當(dāng)然,有些沒有返回值,但已經(jīng)執(zhí)行了函數(shù)體內(nèi)的行為,就是說,加括號(hào)的,就代表將會(huì)執(zhí)行函數(shù)體代碼。
不加括號(hào)的,都是把函數(shù)名稱作為函數(shù)的指針,一個(gè)函數(shù)的名稱就是這個(gè)函數(shù)的指針,此時(shí)不是得到函數(shù)的結(jié)果,因?yàn)椴粫?huì)運(yùn)行函數(shù)體代碼。它只是傳遞了函數(shù)體所在的地址位置,在需要的時(shí)候好找到函數(shù)體去執(zhí)行。
例如window.οnlοad=init;
init函數(shù)并不會(huì)在這行代碼時(shí)就執(zhí)行,瀏覽器加載文檔時(shí)這句話會(huì)被加載,會(huì)被告知文檔加載完要執(zhí)行哪個(gè)函數(shù),但實(shí)際上沒有當(dāng)時(shí)就執(zhí)行,等到整個(gè)文檔加載完成之后才會(huì)通過init這個(gè)指針去執(zhí)行init()。