时间:2023-08-17 来源:未知 分类:前端笔记 阅读:
var a = []
for(var i = 0; i < 10; i ++){
a[i] = function(){
console.log(i)
}
}
a[6]()
答案:最终输出结果:10。原因:var声明的变量i是全局变量,循环结束的时候i的值是10,方法调用时循环已经结束,打印i是10。
var tmp = 123
if(true) {
console.log(tmp)
let tmp
}
答案:最终执行结果会报错,报错信息如下,在块级作用域中声明变量tmp,tmp就会被绑定到所在的块级作用域中,此作用域中,变量声明之前被调用,所以会报错,它不受上层作用域同名变量的影响。
var arr = [12, 34, 32, 89, 4]
答案:使用Math.min()方法以及扩展运算符实现
let minValue =
(...arr);
console.log(minValue)
答案:var, let, const是javaScript中变量声明的三种方式。
var a = 10
var obj = {
a:20,
fn () {
setTimeout(() => {
console.log(this.a)
})
}
}
obj.fn()
答案:输出20。obj调用fn函数时,this指向obj,obj中的a等于20,所以this.a表示obj中的a,就等于20。
答案:
用于创建独一无二的值,可做唯一key用于缓存等场景
用于创建类的私有变量,利用symbol属性不能被枚举的特性声明作为私有属性
用来重置对象的属性,比如 Symbol.toStringTag
可实现 Symbol.iterator迭代器, 让普通对象变为可迭代对象
使用Symbol.for(‘xxx’)获取全局的symbol值
答案:
浅拷贝:拷贝对象里面的数据,但是不拷贝对象里面的子对象
深拷贝:会克隆出一个对象,数据相同,但是引用地址不同(就是拷贝A对象里面的数据,而且拷贝它里面的子对象)
橙子,热爱前端,关注前端,4年的前端工作经验,熟练掌握前端各项技能,熟练多种前端框架,希望遇到志同道合的前端朋友们,一起学习交流,共同进步!