【Web前端】setInterval(para1,para2)) 中 para1 的引号和括号问题
来源:互联网 发布:监控系统 知乎 编辑:程序博客网 时间:2024/06/06 02:26
前言
在使用 setInterval 的时候,传入的第一个参数——函数,发现了一些问题。
在<head>标签中使用 Js
window.onload = function () { var num = 2; function auto(){ alert(num); } setInterval("auto",2000); //或是 setInterval("auto()",2000);
会弹出
Uncaught ReferenceError: auto is not definedat xxxxx
后来又试了一下
window.onload = function () { var num = 2; function auto(){ alert(num); } setInterval(auto,2000); //或是 setInterval(auto(),2000);
这样会发现弹出警告框,并显示 2 ,定时器也能正常发挥效果。但是另一个加了括号的,就只会运行一次,没有定时的效果。
引号问题:
加引号是标明去全局变量中寻找 auto() 方法,如果是
window.onload=function() { function test(){ alert(11); }setTimeout("test()",2000);}
因为 test() 方法是在 window.onload,setTimeout(“test()”,2000);在全局中是找不到 test() 方法的,所以会报错。
如果是这样,可以修改成以下状态就可以了。
window.onload=function() { setTimeout("test()",2000);}function test(){ alert(11);}
在<body>标签中使用 Js
其他部分一样,加引号的情况这里可以正常作用:
var num = 2; function auto(){ alert(num); } setInterval("auto()",2000);
总结
函数调用必须加括号,即使无参数。加括号返回的是函数执行完的值, 不加括号直接返回的是函数——这个通常用于把函数当做参数传递另一个函数中去。
关于引号那部分,报错与正常执行的问题:
setInterval(“fun()”,1000); 这种调用在<head>中报未定义,在全局我们已经说过了 。我们可以把带引号的参数理解为:可执行代码 。
内部可以访问其上层的函数和变量,而外部却不能访问内部的函数和变量。JavaScript有一个预编译处理,首先对函数和变量进行预编译。也就是说其函数和变量作用域是在其声明的时候确定的,而不是在执行的时候确定。
当setInterval把”fun()”执行环境换为全局的后,对fun的调用是无效的。因为全局不能访问局部的函数和变量。window.onload相对于window来说就是局部的。
以上引用来自 Jay-Liu ,在此感谢。
作用域相关问题
0 0
- 【Web前端】setInterval(para1,para2)) 中 para1 的引号和括号问题
- 【Web前端】setTimeout和setInterval的区别
- bash中:单引号,双引号,反引号``,小括号,中括号,和大括号的区别
- js中函数调用,加括号和不加括号,加引号和不加引号的区别
- javascript中setInterval和setTimeout第一个参数加与不加引号的区别
- C语言用头文件用引号和中括号的区别
- setInterval函数第一个参数引号问题
- java中引号的问题
- Vim 自动补全成对的括号和引号
- setInterval和setTimeout函数中This的指向问题
- python中括号和方括号的问题
- JavaScript中setInterval函数应用常见问题之一(第一个参数不加引号与加引号的区别)
- Web前端面试中遇到的问题
- 前端js中的引号问题
- js中setInterval中出现的问题
- mysql中使用引号的问题
- HTML中引号多层嵌套的问题
- HTML中引号多层嵌套的问题
- 1004. 成绩排名
- Contest1261 - 成都东软学院2016年ACM冬季校赛热身赛 - 题解
- mooc网 笔记 javascript入门篇 2
- magic(NOIP2016普及组复赛)
- java配置文件的读写操作
- 【Web前端】setInterval(para1,para2)) 中 para1 的引号和括号问题
- bug宝典JAVA篇之构造函数问题
- 三极管和mos管的区别
- 技术博客
- jQuery 面试问题和答案
- 一张图看caffe目录结构
- lamp 安装
- 用直播(推拉流)模拟实现视频聊天功能(iOS)
- spring之创建spring后处理器