不寻常的transitionend脚本行为

时间:2015-05-11 14:55:53

标签: javascript

嘿,大家看看下面的脚本::

  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"

为什么,我期待在两个脚本中打印上述结果,那为什么我得到不同的结果? ,console.log(name);也在if条件之前,为什么if条件会影响结果?

谢谢。

Alex-z。

1 个答案:

答案 0 :(得分:1)

这不是if语句,它是取消循环(和函数)的return语句。

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');
}