setInterval方法抽离后传参后只执行一次
setInterval(hello('nihao'), 30);
function hello(word) {
console.log(word)
}
如果像上面一样传递参数 调试发现只执行了一次
这是因为 hello(‘nihao’)相当于函数调用了一次 不是回调函数的正确写法
查阅后我们可以看到
declare function setInterval(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
可以看到后面的arguments:,这才是我们传参的地方setInterval(methodName, time, xxx);
setInterval(hello, 30, 'nihao');
function hello(word) {
console.log(word)
}
点访问与[]访问属性
var obj = {
a: 1,
b: 2,
c: 3
}
console.log(obj['b']) // b需要加上引号
key = 'b'
console.log(obj[key]) // 不能直接用点访问属性
// 且对于不符合命名规范的属性名 需要加上‘’ 而且只能用[]访问
js中引用对象比较
js中引用对象比较比较的是地址 而不是值, 而在Python里, obj1==obj2
比较的是两个变量的值;若要比较它们的地址/id,则使用关键字is
:
list1 = [1, 2, 3];
list2 = [1, 2, 3];
list3 = list1;
console.log(list1 == list2); // false
console.log(list1 === list2); // false
console.log(list1 == list3); // true
console.log({} == {}); // false
js 中typeof 数组得到的是object
var a = 6;
var obj = {
a: 5,
b: 2,
c: [
1,
this.a,
function () {
document.write(this[1]);
}
]
}
document.write(obj.c[0]); # 6
obj.c[2]() # 6
对象定义时候不能使用自己的变量
不阻止ondragover默认事件就无法触发ondrop函数
如果想让拖拽元素在目标元素里做点事情,就必须要在 ondragover()
里加event.preventDefault()
这一行代码。
]
}
document.write(obj.c[0]); # 6
obj.c2 # 6
对象定义时候不能使用自己的变量
### 不阻止ondragover默认事件就无法触发ondrop函数
如果想让拖拽元素在目标元素里做点事情,就必须要在 `ondragover()` 里加`event.preventDefault()`这一行代码。