7天入门JavaScript,第四天

时间:2021-09-14 14:45:40

作用域: (理解闭包的前提是先理解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",指令说明(脚本或函数中)后续的代码将会解析为严格代码