2017-05-26 85 views
0

所以, 我知道這是可以覆蓋像alert()confirm() ...等爲以下功能:是它可以覆蓋「如果」在JavaScript

window.alert = function(x){ 
// do something 
} 

我的問題是,是否有可能if語句也一樣嗎?

window.if = function(x){ 
// etc 
} 

謝謝!

+1

'if'不是函數,因此:nope。 – garglblarg

+6

'if'是一種語言結構,而不是函數,所以不,你不能 –

回答

4

if不是功能。這是語言的內置聲明,所以不,它不能簡單地被覆蓋。

無論如何,在99.9999%的情況下更改if的含義並不理想。您可能會破壞可能會在您的網站上使用的所有其他代碼。

如果你想創建自己的版本,它並不難:

function myIf(predF, thenF, elseF) { 
    if (predF()) { 
     thenF() 
    } else { 
     elseF() 
    } 
} 

然後使用它像:

myIf(() => 5 < 10, 
    () => console.log("It works!"), 
    () => console.log("It's broken!") 
) 

然後,讓你給這個函數的任何變化。

(應該指出的是,使用上面的函數可能是一個可怕的想法,這只是一個例子)。

+0

真棒,這正是我所需要的。謝謝! – user7873148

+0

會做,但不能接受答案,除非它是10分鐘後..這就是如何計算器工作。 – user7873148

+1

@ user7873148純粹出於好奇,但是你需要對引發這個問題的'if'做出什麼改變? – Carcigenicate

0

If是一個保留關鍵字在javascript語言中它不是一個函數。

關鍵字就像alphabets你不改變語言的字母意思,它是沒有意義的。

有關其他保留關鍵字的更多信息,請單擊here