Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >JS 计时器参数剖析与真题

JS 计时器参数剖析与真题

作者头像
HTML5学堂
发布于 2018-03-13 08:46:35
发布于 2018-03-13 08:46:35
2.5K0
举报
文章被收录于专栏:HTML5学堂HTML5学堂
HTML5学堂-码匠:计时器的第一个参数,包含几种不同的书写方法,可以是函数名,匿名函数,JS代码字符串,还有一些面试题当中会出现“函数调用”的书写方式。

那么,这些不同的书写方法分别表示什么呢?在计时器中出现的第一个参数,作用域又是在哪里创建的?

计时器第一个参数的不同写法

函数名的书写方法

这是最为常见的一种书写方法,该方法表示的是,在固定毫秒之后,将这个函数名的函数添加到执行队列当中,让其执行。

字符串式的书写方法

当一个函数有参数时,很多人会采用这样的调用方法。

Tips:参数为文字时,可以用单引号内包双引,或双引号内包单引的方式书写。

setTimeout 和 setInterval 都可以接受字符串(作为第一个参数),但是并不推荐使用这种书写方法。原因在于:为了能够运行,会在代码执行时,将字符串通过eval方法进行转换。

eval方法,其作用就是把字符串当做JS去执行。eval虽然能够解决很多问题,有很大的作用,但是也广为诟病,其性能问题,安全性问题,以及在JS严格模式与非严格模式的不同。

由于这些缺点,使得众多开发者在项目和代码中,尽量规避了对它的使用。

匿名函数的书写方法

当函数有参数要传递,而又不能使用字符串式的书写方法,此时,匿名函数的书写方法就派上了用场。

函数调用的书写方法

这种书写方法,本身是错误的,几乎在实际开发当中是无法找到的。当然在偶尔会在面试当中以“坑”的形式出现……

此处第一个函数会在执行到计时器这行代码时,立即执行,而返回的是h5course函数的返回值,而非函数本身。如果函数返回默认返回值undefined,setInterval也不会报错。

第一个参数的作用域归属

计时器的第一个参数,默认在全局作用域中执行,因此函数内的 this 将会指向window。

Tips:运行结果为true

Tips:运行结果为true

来几道面试真题练练手

如下代码打印结果是什么

Tips:答案请见文章底部

码匠 两个字多久会打印出来

Tips:答案请见文章底部

请说出如下代码运行情况

Tips:答案请见文章底部

总而言之,言而总之

当要执行的函数没有参数时,可以直接使用函数名调用

当需要向回调函数中传递参数时,不要使用字符串做参数,使用匿名函数做参数,并在匿名函数内部执行回调函数。

第一参数的函数会在全局作用域中进行执行

三道面试真题的答案

第一题:先输出10,之后大概1秒后,同时输出10个10。

第二题:约1000毫秒(即约1秒)

第三题:在函数执行时,两个li的背景颜色立即被设置为了红色,经过大概5000毫秒之后,控制台报错(两个错误),错误内容均为“red is not defined”

开开心心每一天

生活艰辛,代码不易,但,不要忘记微笑!

版权声明:该图来自“【美】莉兹·克里莫 (author)”的书籍《你今天真好看》

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-09-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 懂点君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
编程篇(002)-js实现一个打点计时器
1、从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅 1 2、返回的对象中需要包含一个 cancel 方法,用于停止定时操作 3、第一个数需要立即输出
齐丶先丶森
2022/05/12
1.9K0
Web前端学习 第3章 JavaScript基础教程17 计时器方
计时器方法可以实现在指定的时间过后,单次或重复调用函数的功能,setTimeout可以实现函数在指定毫秒数后单次执行,setInterval可以实现函数在指定毫秒数后重复执行,语法如下所示:
学习猿地
2020/06/17
1.6K0
Web前端学习 第3章 JavaScript基础教程17 计时器方
你所不知道的setTimeout
JavaScript提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInterval()这两个函数来完成。它们向任务队列添加定时任务。初始接触它的人都觉得好简单,实时上真的如此么?这里记载下,一路对其使用姿势变迁的历程。 1, setTimeout()基础 setTimeout函数用来指定某个函数或某段代码,在多少毫秒之后执行。它返回一个整数,表示定时器的编号,以后可以用来取消这个定时器。 var timerId = setTimeout(func|code, de
晚晴幽草轩轩主
2018/03/27
1.9K0
关于JavaScript计时器的知识学习
推特上大约一半的回答都是错误的。答案并不是 V8(或者虚拟机)!!虽然“JavaScript”计时器” 很出名,但是 setTimeout 和 setInterval 函数并不是 ECMAScript 规范或者任何 JavaScript 引擎实现。定时器由浏览器实现,在不同浏览器中的实现也会有所不同,Node.js 也实现了自己的定时器。
coder_koala
2020/12/17
1.7K0
关于JavaScript计时器的知识学习
仅用18行JavaScript构建一个倒数计时器
因此,事不宜迟,这里介绍了如何仅用18行JavaScript来制作自己的倒计时时钟。
Lemon黄
2020/06/04
3.1K0
仅用18行JavaScript构建一个倒数计时器
实战|仅用18行JavaScript构建一个倒数计时器
有时候,你会需要构建一个 JavaScript 倒计时时钟。你可能会有一个活动、一个销售、一个促销或一个游戏。你可以用原生的 JavaScript 构建一个时钟,而不是去找一个插件。尽管有很多很棒的时钟插件,但是使用原生 JavaScript 可以带来以下好处:
张张
2020/09/18
4.4K0
实战|仅用18行JavaScript构建一个倒数计时器
经典JS闭包面试题
大部分人都会做错的经典JS闭包面试题 目录 由工作中演变而来的面试题 JS中有几种函数 创建函数的几种方式 三个fun函数的关系是什么? 函数作用域链的问题 到底在调用哪个函数? 后话 由工作中演变而来的面试题 这是一个我工作当中的遇到的一个问题,似乎很有趣,就当做了一道题去面试,发现几乎没人能全部答对并说出原因,遂拿出来聊一聊吧。 先看题目代码: function fun(n,o) { console.log(o) return { fun:function(m){ return
逸鹏
2018/04/09
1.7K0
经典JS闭包面试题
2016.05 第三周 群问题分享
HTML+CSS 一个div里面有个img标签,div的高度由img撑开;img的兄弟级有个div要使内层div的高度等于外层div的高度,除了用JS实现,还能怎么实现? 2016.05.16~2016.06.20 核心概念 flex、position、display 参考答案 结构: <div class="wrap"> <img src="h5_course.jpg" alt="HTML5学堂"> <div>HTML5</div> </div> 设置多栏多列布局display
HTML5学堂
2018/03/13
1.1K0
js中settimeout()的用法详解_低噪放工作原理
setTimeout与setInterval是JavaScript引擎提供的两个定时器方法,分别用于函数的延时执行和循环调用。前者的主要思想是通过一个定时器,让函数在计时结束后再执行;后者则是每隔一定的时间,就启动一次函数的执行。
全栈程序员站长
2022/11/09
1.8K0
js中settimeout()的用法详解_低噪放工作原理
🥬 🐶的uniapp学习之🦌 【计时器】
我这里使用的是npm安装。如果是纯的uniapp项目,是没有包管理器package.json的,更没有node_modules的。
用户4793865
2023/01/12
1.7K0
js内置对象---计时器对象
js内置对象---计时器对象 一、计时器对象简介 二、一次性计时器 1. 一次性计时器的写法 2. 清除计时器 三、循环计时器 1. 一次性计时器的写法 2. 清除计时器 四、帧计时器 1. 设置兼容性 2. 移除计时器 五、把一次性计时器写成循环计时器 1. 写法 2. 移除计时器 六、三个计时器的区别 一、计时器对象简介 计时器对象分类 计时器对象分为一次性计时器,循环计时器,帧计时器(跟电脑的刷新频率有关) 二、一次性计时器 计时器的参数有string||function delay ms ms—延迟
IT工作者
2022/03/29
2.5K0
javaScript学习笔记(一)js基础
JavaScript是目前web开发中不可缺少的脚本语言,js不需要编译即可运行,运行在客户端,需要通过浏览器来解析执行JavaScript代码。
全栈程序员站长
2022/09/15
2.8K0
javaScript学习笔记(一)js基础
37个JavaScript基本面试问题和解答(建议收藏)
1、使用typeof bar ===“object”来确定bar是否是一个对象时有什么潜在的缺陷?这个陷阱如何避免?
用户1272076
2019/03/26
3.1K0
前端必备,25个最基本的JavaScript面试问题及答案
1.使用 typeof bar === "object" 来确定 bar 是否是对象的潜在陷阱是什么?如何避免这个陷阱?
用户5997198
2019/08/09
9880
【Node.js】全局可用变量、函数和对象
在Node.js中提供了一些全局可用的变量、函数和对象,全局就是不需要进行模块加载,可以直接使用的。其中包括全局作用域的函数和对象。也包括不在全局作用域,而在每个模块作用域都存在的变量、函数和对象,在全局可用,但不是golbal对象的属性。
颜颜yan_
2023/02/19
2.7K0
【Node.js】全局可用变量、函数和对象
JavaScript 严格模式
严格模式是 ECMAScript5 (ES5)发布的语言新特性。使用严格模式可以限制 JavaScript 的一些语言特性,使用严格模式可以去除在书写代码时的一些“骚操作”(有些特性在严格模式下是不可用的),使代码更严谨整洁。
多云转晴
2020/02/17
1K0
settime和setinterval_setinterval是异步还是同步
setTimeout和setInterval的语法相同。它们都有两个参数,一个是将要执行的代码字符串,还有一个是以毫秒为单位的时间间隔,当过了那个时间段之后就将执行那段代码。
全栈程序员站长
2022/11/09
8230
「查缺补漏」送你 54 道 JavaScript 面试题
. VS = 操作符优先级 let a = {n : 1}; let b = a; a.x = a = {n: 2}; console.log(a.x) console.log(b.x) 输出是什么呢? 真的想明白了吗? 答案 undefined { n : 2} 你真的了解作用域吗 var a = 0, b = 0; function A(a) {
童欧巴
2020/12/15
1.1K0
前端js手写题经常忘,记录一下
使用时间戳的节流函数会在第一次触发事件时立即执行,以后每过 wait 秒之后才执行一次,并且最后一次触发事件不会被执行
helloworld1024
2022/09/23
1K0
[Python实战]你也能写的计时器程序
上次,公众号介绍了如何使用 Pyqt5 制作猜数游戏界面,并介绍了如何在 Pycharm 中使用 Qt Designer 生成 UI 文件。这次,我们要学习如何写一个简单的计时器程序。
用户2870857
2019/12/23
1.9K0
[Python实战]你也能写的计时器程序
相关推荐
编程篇(002)-js实现一个打点计时器
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档