本系列为博主开的新坑,主要是对书的一些缩写和概括,加上博主自己的一些理解,提取出的一些书的主要内容。
模式
模式是指一个通用问题的解决方法,一个模式不仅仅是一个可以用来复制粘贴的代码解决方案,更多的提供了一个更好实践经验,有用的抽象化表示和解决一类问题的模板。
模式
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();
报错啦
未完待续~