setInterval方法抽离后传参后只执行一次

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()`这一行代码。

上一篇:网页的动态刷新


下一篇:vue等待几秒后执行,vue循环调用,setInterval()与setTimeout()计时器