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,原因是我们可能在某些"不知道"的情况下对常量对象调 ...
随机推荐
- Linux下配置Squid基础教程
Linux下配置Squid基础教程 本视频高清下载地址:http://down.51cto.com/data/437529 本文出自 "李晨光原创技术博客" 博客,请务必保留此出处 ...
- unbound和mail服务的部署和简单应用
1.服务的介绍 Unbound是一个缓存DNS解析器.unbound官网 它使用根区域的内置权威名称服务器列表 (.),所谓的根提示.在收到DNS查询时,它会询问 答案的根名称服务器,几乎在所有情况下 ...
- Redis 数据持久化的方案的实现
原文:Redis 数据持久化的方案的实现 版权声明:m_nanle_xiaobudiu https://blog.csdn.net/m_nanle_xiaobudiu/article/details/ ...
- 【VC++学习笔记五】SDI|MDI的全屏显示
一.Mainframe中添加一个记录是否全屏状态的变量BOOL m_bFullScreen. 二.工具栏添加一个按钮,进行全屏的操作,响应事件函数写在Mainframe中. 三.在响应函数中,添加如下 ...
- WebView的截屏实现
WebView的截屏主要有两种实现方式: 方式1: bitmap = webView.getDrawingCache(); 可是,webView必需要mWebView.setDrawingCacheE ...
- 说说第二次配置Ubuntu14.04
任务下达.要装几台linux电脑.并配置能远程--事实上一開始我是拒绝的,内心里百般不想去做.由于干过一次.知道这活儿非常麻烦,这次又有新需求.技术上有非常多还不会.须要花费时间查资料.当时大概预计了 ...
- 强悍的 vim —— 删除空行、删除注释以及加注释解注释
强悍的 vim -- 删除空行.删除注释以及加注释解注释 原文 https://blog.csdn.net/lanchunhui/article/details/51588198 1. 删除空行空行的 ...
- 7.Web Service 调用天气代码
1. 2500多个城市天气预报 WEB服务公用事业 Endpoint:http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx Disco: ...
- Regularized logistic regression
要解决的问题是,给出了具有2个特征的一堆训练数据集,从该数据的分布可以看出它们并不是非常线性可分的,因此很有必要用更高阶的特征来模拟.例如本程序中个就用到了特征值的6次方来求解. Data To be ...
- vim--学习之emmet插件前端开发
Emmet 在vim的使用: 1.嵌套 <ctr+y>+,(ctr+y+逗号三者的组合键,ctr+y一起按在按逗号)相当于Ememet中的Tab键. 2.内容的包围: 写好内容,退出编辑模 ...