7天入门JavaScript,第四天

作用域: (理解闭包的前提是先理解JavaScript的作用域)
  JavaScript使用函数作用域而不是块级作用域,变量在声明他们的函数体嵌套的任意函数体内都是有定义的。
  JavaScript的函数作用域是指:在函数内声明的所有变量在函数体内始终是可见的。  好的做法是将变量的声明都放到function的顶部,而不是将声明靠近放在使用变量之处。

function test(x) {
    var i = x;
    alert("j---"+j+"--k"+k);
    if(x == 0) {
        var j = 0;    
        for(var k=0;k<10;k++) {
            document.writeln(k);
            j = k;
        }
        function inner() {
            return j + k;
            var j = 0;
        }
        alert("inner---"+inner());
        alert(k);
    }
    j ++;
    alert("j---"+j); // j 和 k 之所以能被访问是因为"提前"到函数的顶部。
    alert("k---"+k);
  }
  test(0);


  // 函数定义语句, 函数名和函数体都会"提前"到脚本或函数的顶部。
  fun();  // 不会报错
  function fun() {

  }
 
  fun(); //会报错
  //函数声明语句,只是fun这个变量"提前"了,函数体不会提前到顶部
  var fun = function() {

  }

----------------------------------------------------------------------------------------------------------------------------
  undefined 有两种,一种是声明未赋值就使用 一种是没声明
  alert(typeof s); // undefined,如果不用typeof则会报错,程序中止执行
  var s;
  alert(s); //undefined
 
  null,是表示空值,可以理解为 null是程序级而undefined是系统级

  var a = 1;
  alert((a++)+a); // 3


  eval(),它使用了调用它的变量作用域环境。尽可能的避免使用eval();

  "use strict",指令说明(脚本或函数中)后续的代码将会解析为严格代码


posted @ 2014-08-28 20:04  廖东海  阅读(182)  评论(0编辑  收藏  举报