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()第一个参数带引号和不带引号的区别的更多相关文章

  1. JavaScript中setInterval常见的问题(setInterval第一个参数加引号与不加引号区别)

  2. JavaScript中setInterval函数应用常见问题之一(第一个参数不加引号与加引号的区别)

    学过JavaScript 脚本语言的都应该接触过setInterval 函数.如何使用我想大家都知道,但是有时候对于刚刚接触JavaScript的朋友来讲,还是会在使用的时候碰到这样或那样的问题而感到 ...

  3. setTimeout 第一个参数类型

    读别人代码的时候看到这么一段,很不理解,然后就搜了一下百度 setTimeout / setInterval 第一个参数可以有三种类型: 字符串   .  methods  .  匿名函数 1.字符串 ...

  4. vuex2.0.0爬坑记录 -- mutations的第一个参数state不能解构

    今天在学习vuex的过程中,遇到了一个很困扰人的问题,最终利用vuex的状态快照工具logger解决了问题. 问题是这样的,我在子组件中使用了mapState()函数来将状态映射至子组件中,使子组件能 ...

  5. JS的setTimeout函数第一个参数问题

    setTimeout的第一个参数只能放一个无参的函数,更像放了一个函数指针在那里,如果要放带参数的话,就要拿个匿名函数包裹一下

  6. 对setTimeout()第一个参数是字串的深入理解以及eval函数的理解

    <script language="javascript" type="text/javascript"> var a=1; setTimeout( ...

  7. Bat 参数去引号(各种去引号的奇葩方式,三种变量互转),普通变量不能直接去掉外层引号

    很多情况下,我们需要脱除一个字符串中可能会存在的引号,然后在加上自己的引 号使其中的特殊字符(命令连接符& .| .&&.||,命令行参数界定符Space .tab . ; . ...

  8. 可视化CNN神经网路第一层参数

    在上Andrew Ng的课的时候搜集到了课程里面自带的显示NN参数的代码,但是只能显示灰度图,而且NN里的参数没有通道的概念.所以想要获得可视化CNN的参数,并且达到彩色的效果就不行了. 所以就自己写 ...

  9. 拷贝构造函数第一个参数最好使用const

    拷贝构造函数的第一个参数要求是自身类型的引用,但是没有一定要求具有底层const属性即对常量的引用,但是使用时最好加上const,原因是我们可能在某些"不知道"的情况下对常量对象调 ...

随机推荐

  1. matlab中plot画图参数的设置

    原文链接:http://blog.sciencenet.cn/blog-281551-573856.html 一.Matlab绘图中用到的直线属性包括: (1)LineStyle:线形 (2)Line ...

  2. MVC权限验证过滤器

    Action属性,权限设定属性   [AttributeUsage(AttributeTargets.Method, Inherited = true, AllowMultiple = false)] ...

  3. 用Nagios监控Sql Server服务器

    在Suse 下配置Nagios来监控Ms SQL Server操作演示 本文出自 "李晨光原创技术博客" 博客,谢绝转载!

  4. 浏览器下管理Linux系统--记webmin的使用

    本文介绍一款浏览器方式来管理linux的一种方式,这款软件就叫webmin,Webmin 让您能够在远程使用支持 HTTPS (SSL 上的 HTTP)协议的 Web 浏览器通过 Web 界面管理您的 ...

  5. 博弈论 SG函数(模板) HDU 1848 Fibonacci again and again

    Fibonacci again and again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav ...

  6. call(),apply()和bind()的详解使用:

    obj.call(thisObj, arg1, arg2, ...); obj.apply(thisObj, [arg1, arg2, ...]); 两者作用一致,都是把obj(即this)绑定到th ...

  7. XSY3244 10.31 D

    XSY3244 10.31 D 题意: ​ 数轴上有\(N\)只老鼠\(M\)个洞,每个洞有一个容量,求所有老鼠进洞的最小代价.(\(N,M\leq1000000\),时限\(2s\)) 题解: ​ ...

  8. Day 3 EX 购物车自写

    # -*- coding: utf_8 _*_# Author:Vi import copygoods = [0,[1,'iphone',20],[2,'ipad',2500]]salary = in ...

  9. docker部署mysql 实现远程连接

    1. docker search mysql    # 查看mysql版本 2. docker pull mysql:5.7   # 拉取mysql 5.7 3. docker images  # 查 ...

  10. 洛谷 P2021 faebdc玩扑克

    P2021 faebdc玩扑克 题目背景 faebdc和zky在玩一个小游戏 题目描述 zky有n个扑克牌,编号从1到n,zky把它排成一个序列,每次把最上方的扑克牌放在牌堆底,然后把下一张扑克牌拿出 ...