复习JavaScript 1

时间:2014-01-21 17:13:26   收藏:0   阅读:378

  最近发现JavaScript有些基本概念模糊,趁这个机会学习下 @汤姆大叔 的《深入理解JavaScript》系列,复习记录下遗忘的基础知识。在此感谢汤姆大叔!

  一、编写高质量JavaScript代码的基本要点

  1、全局变量

  隐式全局变量和明确定义的全局变量间的不同:

  •  通过var创建的全局变量(任何函数之外的程序中创建)是不能被删除的。
  •  无var创建的隐式全局变量(无视是否在函数中创建)是能被删除的。

       确保自己在任何情况访问的都是全局变量:

var global = (function () {
   return this;
}());

  在strict模式下以上代码不行。

  3、函数中变量的预解析

bubuko.com,布布扣
// 反例
myname = "global"; // 全局变量
function func() {
    alert(myname); // "undefined"
    var myname = "local";
    alert(myname); // "local"
}
func();
bubuko.com,布布扣

  在函数中任意位置的var语句都会在函数顶部预先声明。于是上面代码等同于

bubuko.com,布布扣
myname = "global"; // global variable
function func() {
   var myname; // 等同于 -> var myname = undefined;
   alert(myname); // "undefined"
   myname = "local";
   alert(myname); // "local"}
func();
bubuko.com,布布扣

  所以应该弹出的是

  undefined
  
local

  代码处理分两个阶段,第一阶段是变量,函数声明,以及正常格式的参数创建,这是一个解析和进入上下文 的阶段。第二个阶段是代码执行,函数表达式和不合格的标识符(为声明的变量)被创建。但是,出于实用的目的,我们就采用了”hoisting”这个概念, 这种ECMAScript标准中并未定义,通常用来描述行为。  

原文:http://www.cnblogs.com/ltchronus/p/3527498.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!