尤小小
尤小小
var支持变量提升,但是变量提升会带来变量被覆盖,变量污染的问题,let和const是为了解决变量提升而引入的,两者都支持块级作用域,作用域块内的变量不影响块外面的变量。 在同一段代码中,ES6是如何做到既支持变量提升的特征,又要支持块级作用域的? 编译并创建执行上下文,var声明的变量全部都放到变量环境,let/const声明的变量放到词法环境,在词法作用域的内部维护了一个小形栈,变量进行查找的时候,也是从词法环境中的某个块中查找,查到就直接返回给 js 引擎。查不到就继续在变量环境中查找。 如果在初始化之前使用let变量,就会形成一个暂时性死区。 > 作用域是变量和函数可访问的范围,作用域控制着变量和函数的可见性和生命周期 > 块级作用域是通过词法环境的栈结构来实现的,而变量提升是通过变量环境来实现,通过两者结合,JavaScript 引擎也就同时支持了变量提升和块级作用域了。
v-model是vue的一个语法糖,默认利用了名为value的props和名为input的事件。当子组件需要改变父组件通过props的传值时,可以使用v-model。 使用场景:实现select组件、弹窗的显示和隐藏控制。
cookie(4kb)、Web Storage(Local Storage/Session Storage)(5~10M)、indexedDB非关系型数据库
`mixins ` 是vue2.x提供的一种灵活的方式,可以向任意组件或者全局混入`data`、`methods`、`components`、`directives`等。mixins适用于全局公用数据、方法、组件等的注入的场景。 实际上 `vue-router` 插件的内部实现就是基于 `mixins ` ,但是我们业务开发的时候 `全局混入` 要慎重使用,毕竟一旦使用,所有的Vue组件实例都会注入混入的逻辑。
- 1. url-loader 通过limit控制 8kb - 2. image-webpack-loader 图片压缩 - 3. CommonsChunkPlugin 提取公共代码 - 4. 代码排查 sourceMap - 5. 构建结果输出分析 webpack-bundle-analyzer
const 定义的变量,不可改变的是 const 的指针,对于原始数据类型,指针指向的位置存放的就是基础数据;对于引用类型数据,指针指向的位置是堆的内存地址,指针指向不可改变,但是堆里的内存数据是可以改变的。这也就是为什么 const 定义的对象和数组可以更改。
首先我们需要知道如何 `new` 出来一个实例(对象类型的实例或者构造函数的实例) `new关键字` 会进行如下的操作: - 1. 创建一个空的简单JavaScript对象; - 2. 链接该对象到另一个对象; - 3. 将步骤1新创建的对象作为this的上下文; - 4. 如果该函数没有返回对象,则返回this。 **手动实现一个New函数**: ``` function New(fc) { let newObj = {} if(fc.prototype !== null) {...
```javascript Array.prototype._reduce = function(callback /*, initialValue*/) { if (this == null) { throw new TypeError('null or undefined'); } if (typeof callback !== 'function') { throw new TypeError('callback is not a...
- 网站页面mate设置 keywords/description - 页面内标题尽量使用h1 ~ h6标签 - 尽量不要使用单页面应用,采用多页面应用
for in: - es5标准、 - 迭代key、 - 迭代原型上的key,所有属性、 - 适用于对象 for of: - es6标准、 - 迭代value、 - 非原型链属性、 - 适用于数组