var和let示例
声明后未赋值,表现相同
(function() {
      var varTest;
      let letTest;
      console.log(varTest); //输出undefined
      console.log(letTest); //输出undefined
    }());
使用未声明的变量,表现不同:
(function() {
  console.log(varTest); //输出undefined(注意要注释掉下面一行才能运行)
  console.log(letTest); //直接报错:ReferenceError: letTest is not defined
  var varTest = 'test var OK.';
  let letTest = 'test let OK.';
}());
重复声明同一个变量时,表现不同:
(function() {
      "use strict";
      var varTest = 'test var OK.';
      let letTest = 'test let OK.';
      var varTest = 'varTest changed.';
      let letTest = 'letTest changed.'; //直接报错:SyntaxError: Identifier 'letTest' has already been declared
      console.log(varTest); //输出varTest changed.(注意要注释掉上面letTest变量的重复声明才能运行)
      console.log(letTest);
    }());
变量作用范围,表现不同:
(function() {
  var varTest = 'test var OK.';
  let letTest = 'test let OK.';
  {
    var varTest = 'varTest changed.';
    let letTest = 'letTest changed.';
  }
  console.log(varTest); //输出"varTest changed.",内部"{}"中声明的varTest变量覆盖外部的letTest声明
  console.log(letTest); //输出"test let OK.",内部"{}"中声明的letTest和外部的letTest不是同一个变量
}());
备注:
使用 let 语句声明一个变量,该变量的范围限于声明它的块中。 可以在声明变量时为变量赋值,也可以稍后在脚本中给变量赋值。
使用 let 声明的变量,在声明前无法使用,否则将会导致错误。
如果未在 let 语句中初始化您的变量,则将自动为其分配 JavaScript 值 undefined
实例演示:
 
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>建议留言板</title> <style type="text/css"> *{ padding: 0; margin: 0; } </style> </head> <body> <h1>简易留言板</h1> <div id="box"> </div> <textarea name="" id="msg" cols="30" rows="10"></textarea> <input type="button" id="btn" value="留言"> <button onclick="sum()">统计</button> </body> <script type="text/javascript"> var ul = document.createElement("ul"); var box = document.getElementById("box"); box.appendChild(ul); var btn = document.getElementById("btn"); var msg = document.getElementById("msg"); var count = 0; btn.onclick = function () { var li = document.createElement("li"); li.innerHTML = msg.value + "<span>   X</span>" var lis = document.getElementsByTagName("li"); if(lis.length == 0){ ul.appendChild(li); count ++; }else{ ul.insertBefore(li,lis[0]); count ++; } msg.value = ""; var spans = document.getElementsByTagName("span"); // 方法一let: // for( let i = 0; i< spans.length; i++){ // // spans[i].onclick = function () { // ul.removeChild(spans[i].parentNode); // console.log(typeof this); // // console.log(typeof spans[i]); // count --; // } // // } // 方法二var: for( var i = 0; i< spans.length; i++){ spans[i].onclick = function () { ul.removeChild(this.parentNode); console.log(typeof this); // console.log(typeof spans[i]); count --; } } } function sum() { alert("一共发布了"+count+"条留言"); } </script> </html>
 
 
         
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号