2015-05-28 15 views
0
// Change the following function: 
function sayHello(name) { 
    return "Hello " + name; 
} 

// Not possible to change the code below 
console.log(sayHello("John")); 

function sayHello(name) { 
    return "Hola " + name; 
} 

以下代碼的輸出將爲Hola John在函數定義中烘烤以防止JavaScript中的超載

是否可以修改函數sayHello的第一個定義,以便輸出爲Hello John?也許有一種方法可以修改函數,以便在它被調用的地方「嵌入」定義,然後再被覆蓋......?

+0

我很確定這個答案是否定的。 「sayHello」的第二個定義總是會由於提升而覆蓋第一個定義。 – Andy

回答

1

函數sayHello在第一遍時聲明它。然後在第二遍,你可以「重新綁定/覆蓋」sayHello的定義

// Change the following function: 
sayHello = function(name) { 
    return "Hello " + name; 
} 

// Not possible to change the code below 
console.log(sayHello("John")); 

function sayHello(name) { 
    return "Hola " + name; 
} 
+0

1.您應該使用'var' –

+0

2.函數不能用這種方式重新定義 –

+0

1.爲什麼要使用var?無論它是否存在,目的是掩蓋'hola函數',所以不妨將其設爲全局 2. console.log輸出hello,這是預期行爲,僅存在詞彙表的問題 – user753642