js 一些细节 持续更新

for(var i=0;i<5;i++){
  (function (j) {
    setTimeout(function () {
      console.log(new Date,j)
    },2000)
    })(i);
}
console.log(new Date,i)    //5    1秒后01234
for (var i = 0; i < 5; i++) {
    (function(j) {
        setTimeout(function() {
            console.log(new Date, j);
        }, 1000 * j));  // 这里修改 0~4 的定时器时间
    })(i);
}

setTimeout(function() { // 这里增加定时器,超时设置为 5 秒
    console.log(new Date, i);
}, 1000 * i);    //最终输出为012345 0立即输出,其他每个1秒输出一个

 

2 http常见状态码:200 304 404 500

 

3.事件监听:addEventListener  attachEvent  removeEventListener,优点是可以绑定(解绑)多个事件

   事件委托:利用冒泡机制,把事件加到父元素或祖先元素上,触发执行效果。

优点:会加快js执行速度

var item1 = document.getElementById("item1");
var item2 = document.getElementById("item2");
var item3 = document.getElementById("item3");

document.addEventListener("click",function(event){
var target = event.target;
  if(target == item1){
    alert("hello item1");
  }else if(target == item2){
    alert("hello item2");
  }else if(target == item3){
    alert("hello item3");
  }
})

也可以动态添加dom元素

<ul id="list">
<li id="item1" >item1</li>
<li id="item2" >item2</li>
<li id="item3" >item3</li>
</ul>

<script>
var list = document.getElementById("list");

document.addEventListener("click",function(event){
  var target = event.target;
  if(target.nodeName == "LI"){
    alert(target.innerHTML);
  }
})

var node=document.createElement("li");
var textnode=document.createTextNode("item4");
node.appendChild(textnode);
list.appendChild(node);

</script>

 4.利用promise实现3灯无限切换(利用递归)

  function red(){
    console.log('red');
  }
  function green(){
    console.log('green');
  }
  function yellow(){
    console.log('yellow');
  }

  var light = function(timmer, cb){
    return new Promise(function(resolve, reject) {
      setTimeout(function() {
        cb();
        resolve();
      }, timmer);
    });
  };

  var d = new Promise(function(resolve, reject){resolve();});
  var step = function(def) {
    def.then(function(){
      return light(3000, red);
    }).then(function(){
      return light(2000, green);
    }).then(function(){
      return light(1000, yellow);
    }).then(function(){
      step(def);
    });
  }

  step(d);

 5.哪里不适合使用箭头函数:a.定义字面量方法时(应该使用es6的方法简写fn())  b.定义原型方法时(应使用es5)  c.定义事件回调函数时 d.定义构造函数时

6.AMD: RequireJS的规范化产出,依赖前置,异步模块定义

CMD: SeaJS的规范化产出,依赖就近,同步模块定义

CommonJS: module.exports     node.js使用 前端不支持

ES6:  import  export 

posted @ 2018-02-28 16:57  九爷九  阅读(106)  评论(0编辑  收藏  举报