setInterval(alert('welcome'),1000); 立刻弹窗welcome 只弹一次
setInterval(alert(welcome),1000); 没有定义welcome 报错一次
setInterval("alert('welcome')",1000);每隔一秒弹窗welcome一次
setInterval("alert(welcome)",1000);没有定义welcome 每隔一秒报错一次
let welcome='welcome'
setInterval("alert(welcome)",1000); 每隔一秒弹窗welcome一次
别管welcome有没有声明
setInterval传递的第一个参数是字符串,你要他怎么执行?
如果第一个参数不是字符串,才会涉及到welcome要作为变量输出,还是作为字符串输出的问题
正确输出:字符串
setInterval(alert('welcome'),1000);
错误输出:1、welcome作为变量未定义 :ReferenceError: welcome is not defined
setInterval(alert(welcome),1000);
错误输出:2、setInterval第一个参数是字符串 :SyntaxError: Invalid or unexpected token
setInterval(“alert('welcome')”,1000);
参考 MDN 上的说明, setInterval 有两种调用方式:
var intervalID = setInterval(func, [delay, arg1, arg2, ...]);
var intervalID = setInterval(code, [delay]);
第一种用法是最常见的, 第一个参数传入的是一个函数, 例如
setInterval(function () { alert("welcome") }, 1000);
会每隔一秒弹窗一次.
第二种用法比较少见, 第一个参数传入的是一个 string 类型的代码 code, 会被类似于 eval() 函数的方式解释执行, 例如
setInterval('alert("welcome")', 1000);
会每隔一秒弹窗一次.
其相当于
setInterval(function () { eval('alert("welcome")') }, 1000);
这道题的代码有两个地方错误:
setInterval(“alert(welcome)”, 1000); // 错误写法!!!
第一个地方是使用了中文引号, 这个就不多说了.
第二个地方是内部的 welcome 既不是字符串字面量, 也不是变量 (没有定义 welcome 变量), 因此即使第一个地方改用了英文引号, 也仍然会报错.
正确写法是:
setInterval("alert('welcome')", 1000); // 使用 'welcome' 字面量
或
var welcome = "welcome"; // 定义了 welcome 变量
setInterval("alert(welcome)", 1000);
顺带一提, 高赞半斤六两5的写法:
setInterval(alert('welcome'), 1000); // 错误写法!!!
是错误的, 因为 setInterval() 的第一个参数应该传入函数, 例如传入 function () { alert('welcome') } 或 () => alert('welcome'), 而 alert('welcome') 是一个立即执行了的函数, 其返回值会被当成第一个参数传入 setInterval(), 但是 alert('welcome') 返回值并不是一个函数, 因此是错误的
- welcome 字面 quot 39 setIntervalwelcome字面quot 39 字面quot operator用户 39 quot attributeerror attribute quot lacalhost the 39 operationalerror quot 39 content quot configuration sqlserver 39 number-of-buckets-specified 39 quot json_extract 39 quot element-plus elmessage 39 quot 226 attribute 39 hive quot unexpected