var a = 6;放在栈还是堆中?
基础类型(Undefined, Null, Boolean, Number, String, Symbol)往往都保存在栈内存中(闭包除外)。
引用类型(Object)它们值的大小是不固定的。引用数据类型的值是保存在堆内存中的对象。JS不允许直接访问堆内存中的位置,因此我们不能直接操作对象的堆内存空间。

什么是闭包?
闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量。
闭包的特性:
函数内再嵌套函数
内部函数可以引用外层的参数和变量
参数和变量不会被垃圾回收机制回收
使用闭包的注意点
由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用
闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露

  解决方法是,在退出函数之前,将不使用的局部变量全部删除

v-if和v-for
不兼容//当和 v-if 一起使用时,v-for 的优先级比 v-if 更高 vue2和vue3不同

v-for的key
以便维护内部组件及其子树的状态。
key修改对象时可以快速索引排序,高效的更新虚拟DOM。
v-for 的默认行为会尝试原地修改元素而不是移动它们。要强制其重新排序元素,你需要用特殊 attribute key 来提供一个排序提示。

vue生命周期
created,mount,updated,destroy八个
activated
被 keep-alive 缓存的组件激活时调用。(该钩子在服务器端渲染期间不被调用)
deactivated 暂用时
errorCaptured
当捕获一个来自子孙组件的错误时被调用。
此钩子会收到三个参数:错误对象、发生错误的组件实例以及一个包含错误来源信息的字符串。此钩子可以返回 false 以阻止该错误继续向上传播

watch和computed
computed计算属性的结果会被缓存,除非依赖的响应式 property 变化才会重新计算。注意,如果某个依赖 (比如非响应式 property) 在该实例范畴之外,则计算属性是不会被更新的。
watch一个对象,键是需要观察的表达式,值是对应回调函数。值也可以是方法名,或者包含选项的对象。Vue 实例将会在实例化时调用 $watch(),遍历 watch 对象的每一个 property。