setInterval()第一个参数带引号和不带引号的区别:
关于定时函数setInterval()的基本用法这里就不做介绍了,查阅相关教程即可,这里主要介绍一下setInterval()函数的第一个参数两种不同的形式的区别和在应用中应该注意的事项,下面结合实例简单介绍一下。
setInterval()函数第一个参数具有两种形式:
一.字符串形式:

setInterval("a()",1000)

二.指针形式:

setInterval(a,1000);

以上两种都是经常使用的方式,都能够在每隔一秒执行一次a()函数。但是两种方式并不是在所有的情况下都能够生效。
代码实例如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>setInterval()第一个参数带引号和不带引号的区别-蚂蚁部落</title>
<style type="text/css">
div{
width:200px;
height:50px;
margin:0px auto;
background-color:green;
text-align:center;
line-height:50px;
color:red;
}
</style>
<script type="text/javascript">
window.onload=function b(){
var a=0
function addNumber(){
a=a+1;
document.getElementById("num").innerHTML=a;
}
setInterval("addNumber()",1000);
}
</script>
</head>
<body>
<div id="num"></div>
</body>
</html>

以上代码并没有实现我们所期望的效果,也就是div中的数字自增现象,貌似代码也没有任何错误。再看一段代码实例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>setInterval()第一个参数带引号和不带引号的区别-蚂蚁部落</title>
<style type="text/css">
div{
width:200px;
height:50px;
margin:0px auto;
background-color:green;
text-align:center;
line-height:50px;
color:red;
}
</style>
<script type="text/javascript">
window.onload=function b(){
var a=0
function addNumber(){
a=a+1;
document.getElementById("num").innerHTML=a;
}
setInterval(addNumber,1000);
}
</script>
</head>
<body>
<div id="num"></div>
</body>
</html>

以上代码实现了div中数字自增效果。如果比较两个实例代码,唯一的不同点就是setInterval()函数第一个参数的不同,第一个使用字符串形式作为参数,第二个是使用指针形式作为参数。下面就介绍一下这两个的不同点:
一.为字符串的时候:
当参数为字符串时候,函数所传递的"addNumber"参数在根本上和addNumber函数没有任何关系,而setInterval()函数对此字符串的处理方式类似于eval()函数,会在全局作用域查找addNumber()函数,于是会出现addNumber is not defined的错误。此种传值方式具有eval()同样的问题,所以不建议使用。
二.为函数名称时候:
当参数为函数名称的时候,实际上传递的addNumber()函数的指针(即函数的存储地址),setInterval()函数先寻找局部作用域的函数,如果局部没有才回到全局作用域去找,最后不到会报错。又因为addNumber()函数声明在作用域b中,而setInterval()函数也在作用域b中使用,所以能够找到addNumber()函数。

最新文章

  1. FMDB的使用方法
  2. cellspacing,cellpadding什么区别
  3. enc
  4. Ubuntu下MySql配置
  5. 2016大连网络赛 Function
  6. lambda高级进阶--延迟执行
  7. JAVA_SE基础——70.Math类
  8. 【BZOJ1040】【ZJOI2008】骑士
  9. python字典(dictionary)使用:基本函数code实例,字典的合并、排序、copy,函数中*args 和**kwargs做形参和实参
  10. Chinese word segment based on character representation learning 论文笔记
  11. [UE4]Add Offset
  12. js 简单日历
  13. mysql数据库的备份和还原的总结
  14. poi-对于word的操作(一)
  15. elastaicsearch基础-----&gt;elastaicsearch的使用(一)
  16. Hyperledger Fabric chaincode 开发(疑难解答)
  17. idea一个类中,各个修饰符的符号表示
  18. python&#39;s try&amp;except&amp;else
  19. Fiddler实现手机抓包——小白入门 - 做一个不动声色的大人
  20. 耐心排序Patience Sorting

热门文章

  1. MVC页面常用方法
  2. jquery正则匹配URL地址
  3. cogs 50. [NOIP2002] 选数
  4. 讲的好,php后端模式,php-fpm以及php-cgi, fast-cgi,以及与nginx的关系
  5. LeetCode 223 Rectangle Area(矩形面积)
  6. [Python] Problem with Default Arguments
  7. Greenplum中定义数据库对象之创建与管理模式
  8. Kali linux查看局域网内其他用户的输入信息
  9. spring bean中的properties元素内的ref和value的区别;* 和 ** 的区别
  10. python try except 捕捉错误得到错误的时候的值