setInterval()第一个参数带引号和不带引号的区别
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()函数。
setInterval()第一个参数带引号和不带引号的区别的更多相关文章
- JavaScript中setInterval常见的问题(setInterval第一个参数加引号与不加引号区别)
- JavaScript中setInterval函数应用常见问题之一(第一个参数不加引号与加引号的区别)
学过JavaScript 脚本语言的都应该接触过setInterval 函数.如何使用我想大家都知道,但是有时候对于刚刚接触JavaScript的朋友来讲,还是会在使用的时候碰到这样或那样的问题而感到 ...
- setTimeout 第一个参数类型
读别人代码的时候看到这么一段,很不理解,然后就搜了一下百度 setTimeout / setInterval 第一个参数可以有三种类型: 字符串 . methods . 匿名函数 1.字符串 ...
- vuex2.0.0爬坑记录 -- mutations的第一个参数state不能解构
今天在学习vuex的过程中,遇到了一个很困扰人的问题,最终利用vuex的状态快照工具logger解决了问题. 问题是这样的,我在子组件中使用了mapState()函数来将状态映射至子组件中,使子组件能 ...
- JS的setTimeout函数第一个参数问题
setTimeout的第一个参数只能放一个无参的函数,更像放了一个函数指针在那里,如果要放带参数的话,就要拿个匿名函数包裹一下
- 对setTimeout()第一个参数是字串的深入理解以及eval函数的理解
<script language="javascript" type="text/javascript"> var a=1; setTimeout( ...
- Bat 参数去引号(各种去引号的奇葩方式,三种变量互转),普通变量不能直接去掉外层引号
很多情况下,我们需要脱除一个字符串中可能会存在的引号,然后在加上自己的引 号使其中的特殊字符(命令连接符& .| .&&.||,命令行参数界定符Space .tab . ; . ...
- 可视化CNN神经网路第一层参数
在上Andrew Ng的课的时候搜集到了课程里面自带的显示NN参数的代码,但是只能显示灰度图,而且NN里的参数没有通道的概念.所以想要获得可视化CNN的参数,并且达到彩色的效果就不行了. 所以就自己写 ...
- 拷贝构造函数第一个参数最好使用const
拷贝构造函数的第一个参数要求是自身类型的引用,但是没有一定要求具有底层const属性即对常量的引用,但是使用时最好加上const,原因是我们可能在某些"不知道"的情况下对常量对象调 ...
随机推荐
- JavaScript 与Document
JavaScript JavaScript 是脚本语言, 需要有宿主文件, 他的宿主文件是HTML文件. 可以写在head中 body中 和</heml>之后 一般写在< ...
- 最长回文子串 hihocode 1032 hdu 3068
最长回文 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- android图片资源的适配问题
原文: http://hi.baidu.com/weiyousheng/blog/item/c622d701b9dec6c2277fb5cc.html 在之前的版本中,只有一个drawable,而2. ...
- scrollWidth到底是什么???
贴上MDN对scrollwidth的定义: The Element.scrollWidth read-only property is a measurement of the width of an ...
- Supervisor 的安装与配置教程
简介 Supervisor是一个进程控制系统. 它是一个C/S系统(注意: 其提供WEB接口给用户查询和控制), 它允许用户去监控和控制在类UNIX系统的进程. 它的目标与launchd, daemo ...
- Maven学习总结(20)——Maven pom.xml配置再体会
Maven的pom.xml配置文件详解 <!--父项目的坐标.如果项目中没有规定某个元素的值,那么父项目中的对应值即为项目的默认值. 坐标包括group ID,artifact ID和 vers ...
- Linux下redis安装(单机版)
redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcached类似,但很大程度补偿了 memcached的不足,它支持存储的value类型相对更多,包括stri ...
- 洛谷 P1913 L国的战斗之伞兵
P1913 L国的战斗之伞兵 题目背景 L国即将与I国发动战争!! 题目描述 为了在敌国渗透作战,指挥官决定:派出伞兵前往敌国!然而敌国的风十分强烈,能让伞兵在同一高度不停转悠,直到被刮到一个无风区… ...
- windows10系统下设置mtu值的方法
windows10系统下设置mtu值的方法 http://www.xitongcheng.com/jiaocheng/win10_article_34701.html 以下为服务器上使用 ip ...
- 一些优秀的学习网站(Android)
突然发现自己学习没有总结,从今天开始会持续更新此博文,总结自己的学习情况,也便于自己时常查阅.官方文档就列举了,因为那是必读资料. 一.GitHub部分 1.我的github仓库地址 收藏了我常看的开 ...