A. js怎麼獲得形參數量和實參數量
js 中可以通過如下方式獲得到函數到形參數量和實參數量:
functiontest(a,b,c){
console.log(arguments.callee.length);
console.log(arguments.length)
}
test(1,2,3,4);
上面代碼中的 arguments.callee.length 即為 test() 函數的 形參數量,arguments.length 即為實參數量。
B. jquery (function(menu) {})(jquery)
我剛開始遇到這個問題(匿名函數)的時候也很迷茫呵呵。
後來再網上查了很多。覺得下邊這種解釋挺明白的。
(1). 首先, 要清楚兩者的區別:
(function {// code})是表達式, function {// code}是函數聲明.
(2). 其次, js"預編譯"的特點:
js在"預編譯"階段, 會解釋函數聲明, 但卻會忽略表式.
(3). 當js執行到function() {//code}();時, 由於function() {//code}在"預編譯"階段已經被解釋過, js會跳過function(){//code}, 試圖去執行();, 故會報錯;
當js執行到(function {// code})();時, 由於(function {// code})是表達式, js會去對它求解得到返回值, 由於返回值是一 個函數, 故而遇到();時, 便會被執行.
C. javascript 函數形參的問題
window.setTimeout()函數接收兩個參數,第二個(為什麼先說第二個?)是表示函數延遲執行的時間,而這里延遲執行的函數跟第一個參數密切相關。沒錯,它就是第一個參數。setTimeout()第一個參數是函數,但是這個參數有兩種寫法,一種是函數形式:function(){ yourFunction();};另一種就是以字元串的形式:'yourFunction()'。為什麼window.setTimeout("ShowTime(" + Elements.id + ")",1000) 可以,而window.setTimeout("ShowTime(" + Elements + ")",1000) 不可以呢?因為這里的第一個參數是字元串。顯然,Elements 是一個對象object。"ShowTime(" + Elements + ")"不可能組成一個字元串,而Elements.id則返回的是一個表示某節點id的字元串。所以......
D. 關於JS形參的問題,怎麼設置形參才能使它有id的一些屬性,如下題中的id的value屬性
var top1 = document.getElementById("to");
var words = document.getElementById("word");
改為
var top1 = document.getElementById(to);
var words = document.getElementById(word);
//函數裡面是形參
而調用時應該傳實參
onclick="javascript:myFunction(top,ta)"
改為
onclick="javascript:myFunction(『top』,『ta』)"
E. js實參和形參的區別
實參就是實際函數調用時傳遞給函數的參數;
形參是函數創建時,定義的可以接收的參數集合
F. 關於js函數中變數跟形參同名的問題
functiontest(i){//相當於執行vari=2;
vari=1;//重復聲明i,不會出錯,僅被重新賦值為1
//vari=i;//用參數i賦值給重復聲明的i,不會出錯,依然是i
//擺渡煞筆,這那裡有不當內容
}
test(2);
//函數執行內部第一行之前,裡面已經有了編譯器聲明好的i且值為2
//如果函數體內再出現自由的i,全都是賦值(不包含this.i情況)
另外還有這些知識點:
使用var語句多次聲明一個變數不僅是合法的,而且也不會造成任何錯誤.
如果重復使用的一個聲明有一個初始值,那麼它擔當的不過是一個賦值語句的角色.
如果重復使用的一個聲明沒有一個初始值,那麼它不會對原來存在的變數有任何的影響
具體可以下載<JavaScript權威指南>犀牛書,裡面對JS的基本原理講的很細致,想深入要看。
G. JS里這種形參是什麼意思對應什麼知識點
這是ES6(ES2015)中的一個特性,叫做對象解構。可以看下面的例子
functionf({args,...other}){
console.log(args);//1
console.log(other);//{a:1,b:2,c:3}
}
leta={args:1,a:1,b:2,c:3};
f(a);
用花括弧包裹起來是對象的寫法,以上f方法定義時候需要使用到參數a對象中的args屬性。此處我將a的其它屬性存放於other對象中並且列印出了args為1,other對象為參數a的出args外的所有屬性集合並組裝成一個新的對象。
同理我們也可以給數組解構
let[a,b,c]=[1,2,3];
console.log(a,b,c);
可以看到我們把 a 賦值為1,b賦值為2,c賦值為3。
H. js函數形參和實參的區別
function test(形參){//定義函數時的參數叫做形參,如字面意思形式上的參數並非真的是本身
alert(形參)
}
test(實參)//調用時給的參數稱為實參 就是說真正的參數
想小學數學一樣設一個未知數X 至於X到底為多少是我們給的算
在這里我在附張圖 你參考理解
I. js函數中什麼是形參,什麼是實參,兩者有什麼區別
5個,這里沒有什麼疑問的!
從形式上看很看是兩個的,因為有二個為一組做為一個對象,有三個為一組做為一個對象,共有兩個.所以應該說是兩個,而從我的感覺當中這樣是不對的,因為在JS中不存在(exp1,exp2)這樣的定義方法,他不是{1,2}而是(1,2),而且()的做用除了VB中的索引外,在JS中只是改變了運算符的優先順序,而這里改變的顯然是,運算符的優選順序,而,運算本身的優選順序是自左向右,所以這里除了改變順序達到一個特殊目的,但如果不考慮這個特殊目的,那麼,加了括弧跟不加是沒有區別的.所以這里的參數是五個而不是兩個!
當然你完全可以做一個驗證:定義一個有五個形參的函數,然後加括弧傳值,看一下是否成功!
J. js函數定義時有參數,使用這個函數時不傳參,那麼形參的方法和屬性怎麼傳進來的
Model.onLongPollConnSuccess.call(arguments)