2015-05-11 47 views
1

嘿傢伙看看下面::異常transitionend腳本行爲

function transitionEnd() { 
    var el = document.createElement('bootstrap') 

    var transEndEventNames = { 
     WebkitTransition : 'webkitTransitionEnd', 
     MozTransition : 'transitionend', 
     OTransition  : 'oTransitionEnd otransitionend', 
     transition  : 'transitionend' 
    } 

    for (var name in transEndEventNames) { 
     console.log(name); 
     if (el.style[name] !== undefined) { 
     return { end: transEndEventNames[name] } 
     } 
    } 
    return false // explicit for ie8 ( ._.) 
    } 

transitionEnd(); 

腳本現在,當這個腳本運行被打印到控制檯如下:

"WebkitTransition" 
"MozTransition" 

現在如果我刪除該if檢查for循環內,並且運行下面的腳本,而不是::

function transitionEnd() { 
    var el = document.createElement('bootstrap') 

    var transEndEventNames = { 
     WebkitTransition : 'webkitTransitionEnd', 
     MozTransition : 'transitionend', 
     OTransition  : 'oTransitionEnd otransitionend', 
     transition  : 'transitionend' 
    } 

    for (var name in transEndEventNames) { 
     console.log(name); 
    } 
    return false // explicit for ie8 ( ._.) 
    } 


transitionEnd(); 

什麼打印出如下::

"WebkitTransition" 
"MozTransition" 
"OTransition" 
"transition" 

爲什麼,我期待在這兩個腳本要打印的上述結果,那麼爲什麼會出現differennt結果? ,console.log(name);也是if條件之前,那麼爲什麼if條件影響結果呢?

謝謝。

Alex-z。

+0

你是第一套適合我的代碼。 – kaz

回答

1

這不是if語句,它是取消循環(和函數)的返回語句。

function myFunction() { 
    console.log('Hello'); 
    return; 

    // Unreachable code; this will never run 
    console.log('World'); 
} 

循環中的返回語句完成同樣的事情。

function myFunction() { 
    for(var i = 0; i < 1024; i++) { 
    return i; 
    } 

    // Unreachable code 
    console.log('Hello World'); 
}