速读《Javascript模式》(一)(简介、var的变量提升以及es6新规范的let)

本系列为博主开的新坑,主要是对书的一些缩写和概括,加上博主自己的一些理解,提取出的一些书的主要内容。

 

模式

 

模式是指一个通用问题的解决方法,一个模式不仅仅是一个可以用来复制粘贴的代码解决方案,更多的提供了一个更好实践经验,有用的抽象化表示和解决一类问题的模板。

 

模式

l  设计模式

l  编码模式

l  反模式

 

 

Javascript

 

面向对象的弱类型语言

 

①    非对象(数值、字符串、布尔值)-> 对象

②    定义一个变量即在处理对象

(1)变量会自动成为内置对象的一个属性,成为激活对象

(2)该变量=伪类,因为它拥有其自身的属性,该属性决定了该变量是否可以被修改,被删除和在一个for-in循环中进行枚举

*在es3中没有对外提供

*在es5中提供符方法操纵

 

函数对象—方法

 

基本

一、全局变量

*应避免全局变量的使用 
*采用单一var模式
隐式创建:

1、变量未声明便引用

2、带有var声明的链式赋值


隐含全局变量与明确定义的全局变量有细微的不同,区别在于delete是否能删除

  • 使用var创建的全局变量不可删除
  • 不使用var创建的隐式全局变量可以删除
*es5 严格模式下 没有声明就引用的变量会报错

访问全局对象采用
var global = (function(){
                return this;
            }());

凌散变量
凌散变量存在变量提升和作用域的问题
 //反模式
        myname = "global"; //全局变量
        function func() {
            alert(myname); //未定义
            var myname = "local";
            alert(myname); //局部变量
        }
        func();

相当于
myname = "global"; //全局变量
        function func() {
            var myname;
            alert(myname); //未定义
            myname = "local";
            alert(myname); //局部变量
        }
        func();

结果为


es6 的let 和 const不存在变量提升 顺便测试一下

myname = "global"; //全局变量
        function func() {
            console.log(myname); //未定义
            let myname = "local";
            console.log(myname); //局部变量
        }
        func();


报错啦 


未完待续~

原文地址:https://www.cnblogs.com/suedar/p/8506327.html