function
test2
(a,b)
var r =[1
,3];
var n =
eval
('test2('
+r+')'
);
一般理解eval函式可以將字串轉化為js**執行,一開始理解這裡會將r當作乙個陣列傳遞到函式裡去,然而雖然,這裡r定義為乙個陣列,
但在拼接後轉化為字串,eval函式在執行的時候會預設識別字串裡的陣列元素,逐個傳遞引數 ,好比在 這裡執行了es6的展開操作符…
var m =[1
,2,4
,5];
var i =0;
var n =
'm['
+i+']'
;var psy =
; psy.
push
(n);
console.
log(psy,
'psy');
function
fn(d)
console.
log(
eval
('fn('
+psy+
')')
);
通過以上的講解 不難理解 這裡為什麼一直報錯了,這裡psy雖然是乙個陣列,但是執行的過程中 已經被展開了 這裡的d實際上是陣列的第乙個元素 maya mel裡面button 函式傳參問題
mel裡面直接使用帶參函式是沒有問題的,和其他語言一樣,但是用到button的時候就會有奇怪的寫法 因為要改寫乙個mel指令碼,所以又繼續看了mel的button帶參問題 如果是按鈕 要有返回值 必須先有括號 裡面的除了變數之外的東西必須用引號包圍 下面是乙個引數的情況 showwindow myt...
函式傳值傳參
var obj function x 內部宣告的變數不會影響外面的obj物件 console.log obj.n 2 obj 傳入的是乙個指標 值 x是obj指標的副本,兩者都指向同乙個物件 console.log obj.n 3 例子二 var x 1 function a x a x conso...
在計時器裡面給函式傳參
函式如果是帶括號的話就是直接呼叫函式,返回的是整個函式體,函式會立即執行,如果是不帶括號其實是呼叫了函式名,函式名就相當於乙個指向函式的指標,而不是函式本身。所有在計數器帶引數或者有括號時函式會立即執行,計時器就不起作用了,這樣肯定是不行的,解決辦法是 在函式外面再套一層函式,返回你要執行的函式 t...