ES5随笔

立即执行函数

变量提升

ES5只有函数级作用域

VO:全局的对象
AO:函数执行时存储的参数
VO会激活AO

ES5里如何实现let

try catch 是块级作用域
with 也是块级作用域,但是with会延长作用域链,因为with只对对象上已有的值进行赋值

this

值随运行时变化,谁调用的指向谁

改变this

1、call
2、apply
3、bind 返回一个新对象

闭包

内部函数可以访问外部函数的变量,把函数返回出去
闭包可以保护内部的变量
闭包造成内存泄漏,使用后要==null

面向对象编程

面向对象编程时,JS没有类的概念,可以用函数替代
constructor 就是对应的函数
prototype 按引用传递 Object.create创建原型链的副本

函数提升

函数提升级别比变量高

按值传递:数值、字符串、布尔类型
按引用传递:数组、对象

函数的变量是按值传递的,但是值的内容的指向与值本身有关,若值是对象,则是按引用传递的

原型链

构造函数的属性比原型链的优先级高

整个类是基于js原型链实现的,class实际就是function

如何正确输出li里的内容

点击任何li元素,结果都是6,因为js要操作DOM是单线程,onclick在异步队列里
三种解决办法:
1、闭包,因为闭包有保存变量的能力
2、var改成let
3、this,直接输出this.innerHTML

0~100分之间的学生等级,以10分分段

if else && switch 能解决问题 但是性能差

var s = 'abc' 怎么变成数组

编程思维很重要,写代码请聪明一点

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复