大家都知道,第一个参数一般是一个字符串,内容为将要执行的那个函数的名字,
比如:
variable = setTimeout("func",interval);
具体的问题是这样的:
函数moveElement有四个参数分别为, elementID,final_x,final_y,interval;
具体到:
var repeat = "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")";//
//这些参数的引号双引号为什么非得这样写!!! 我们知道定义好的变量用“+” 连接字符串,字符串用双引号等规则.
movement = setTimeout(repeat,interval);
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这种东西我实在是想不通怎么会成为一个问题的。
我来给你做一个解析吧,虽然这种问题幼稚。嗯,这里吐槽一下,想不通为啥理解不了,要学会分析问题。
正题开始
其实我还想补充一点关于setTimeout的用法和js解析相关的东西的,既然你已经采纳了答案,我也懒得补充了。
结论:
要用不同的引号把一对引号分开,你直接把一对引号当参数解析的时候会解析到闭合的成对的引号会出问题的。。。达不到把引号也传入的效果
你这个问题- -先自己调调看
“大家都知道,第一个参数一般是一个字符串”。。。。
难道手册里不是写的第一个参数为function类型?简单举例如下,为何要用字符串拼接。
这本入门书籍,的确经典,在第十章的时候,使用javaScript实现简单的动画,为了能够抽象化,在函数里面传递了参数,而javaScript里面的内置函数setTimeout函数的第一个参数是字符串,这个时候就涉及到了字符串的拼接,为了让调用函数作为参数放到setTimeout函数里,都保持是一个字符串。
定义的函数是这样的 moveElement(elementId,final_x,final_y,interval),其中第一个参数是一个字符串,其余为number。
而定义的拼接变量为 var repeat="moveElement('"+elementId+"',"+final_x+","+final_y+","+interval+")";
javaScript里面拼接字符串的时候,都是采用string+string的方式,于是我们可以拆解上述变量
第一个字符串为 "moveElement('"
第二个为变量 elementId
第三个字符串为"',"
第四个为变量final_x
第五个为字符串","
第六个为变量final_y
第七个为字符串","
第八个为变量interval
最后一个味字符串")"
这样拼接后会保留住双引号里面的字符串的原样,所以相当于解析成了如下形式"moveElement('message',100,200,10)",(单引号保留,为了保持传入moveElement函数的第一参数为字符串);
了解这个道理,其实将变量repeat定义为如下形式,也是一样的结果
var repeat ="moveElement(""+elementID+"","+final_x+","+final_y+","+interval+")";
只不过作者没有去使用转义字符,而是使用了单引号被双引号包括时保留原义的用法