JavaScript五个常用功能示例(总结分享)

本篇文章给大家带来了关于javascript的相关知识,其中主要介绍了五个常用功能及其示例,包括了计时器、流程控制、闭包应用、arguments剩余参数以及二次封装函数的相关问题,下面一起来看一下,希望对大家有帮助。

JavaScript五个常用功能示例(总结分享)

【相关推荐:javascript视频教程、web前端】

一、计时器

实现一个打点计时器,要求:

1、从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅为 1

立即学习“Java免费学习笔记(深入)”;

2、返回的对象中需要包含一个 cancel 方法,用于停止定时操作

3、第一个数需要立即输出

function count(start, end) {    console.log(start++);     let timer = setInterval(() => {        if (start  {            clearInterval(timer);        },    };}

登录后复制

第一个数立即输出,console.log(start++) 中start++是先输出再自加1。

之后使用setInterval定时器,count函数return出cancel,cancel内是一个清除定时器的操作(引用了timer这个在count函数中声明的变量),这里用到了闭包的知识。

cancel是一个闭包函数,它能访问count函数中的变量timer,这时这个timer不会被JS垃圾回收机制清除(会永驻内存,即使count函数被销毁),这就是可以在外部调用cancel清除timer这个定时器的原因。

闭包是指有权访问另外一个函数作用域中的局部变量的函数。声明在一个函数中的函数,叫做闭包函数。而且内部函数总是可以访问其所在的外部函数中声明的参数和变量,即使在其外部函数被返回(寿命终结)了之后。

二、流程控制

实现 fizzBuzz 函数,参数 num 与返回值的关系如下:
1、如果 num 能同时被 3 和 5 整除,返回字符串 fizzbuzz
2、如果 num 能被 3 整除,返回字符串 fizz
3、如果 num 能被 5 整除,返回字符串 buzz
4、如果参数为空或者不是 Number 类型,返回 false
5、其余情况,返回参数 num

示例:

输入:15输出:fizzbuzz

登录后复制

这就是简单的分支判断:

function fizzBuzz(num) {    if (!num || typeof num !== "number") return false;        if (num % 3 === 0 && num % 5 === 0) return "fizzbuzz";    if (num % 3 === 0) return "fizz";    if (num % 5 === 0) return "buzz";    return num;}

登录后复制

三、闭包应用

实现函数 makeClosures,调用之后满足如下条件:
1、返回一个函数数组 result,长度与 arr 相同
2、运行 result 中第 i 个函数,即 result[i](),结果与 fn(arr[i]) 相同

示例:

var arr = [1, 2, 3];var fn = function (x) {    return x * x;};var result = makeClosures(arr, fn);result[1]() === fn(arr[1]) ? console.log("yes") === 4 : console.log("no"); // yes

登录后复制

解:

function makeClosures(arr, fn) {    const result = []    arr.forEach(item=>{        result.push(function(){            return fn(item)        })    })    return result}

登录后复制

这题一眼看上去感觉是比较绕,但你从上到下去梳理就很容易找到解决的方法:

makeClosures返回一个数组数组中每个元素都是一个函数并且这些函数执行的结果要与使用arr中对应元素作为参数调用fn的结果一致

四、arguments剩余参数

函数 useArguments 可以接收 1 个及以上的参数。请实现函数 useArguments,返回所有调用参数相加后的结果。本题的测试参数全部为 Number 类型,不需考虑参数转换。

输入:1, 2, 3, 4输出:10

登录后复制

解:

function useArguments() {    return [...arguments].reduce((a, b) => a + b);}

登录后复制

函数中能直接访问arguments变量,这个变量是一个含有该函数接收的所有参数的伪数组(不具有数组的全部方法)。

所以我是先使用…解构来将arguments转换成一个真正的数组,之后调用数组的reduce求和方法进行求和即可。

reduce() 方法对数组中的每个元素按序执行一个由您提供的 reducer 函数,每一次运行 reducer 会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。

Array.prototype.reduce(callbackFn, initialValue)

登录后复制

参数:

callbackFn
一个 “reducer” 函数,包含四个参数:

previousValue:上一次调用 callbackFn 时的返回值。在第一次调用时,若指定了初始值 initialValue,其值则为 initialValue,否则为数组索引为 0 的元素 array[0]。currentValue:数组中正在处理的元素。在第一次调用时,若指定了初始值 initialValue,其值则为数组索引为 0 的元素 array[0],否则为 array[1]。currentIndex:数组中正在处理的元素的索引。若指定了初始值initialValue,则起始索引号为 0,否则从索引 1 起始。array:用于遍历的数组。

initialValue 可选
作为第一次调用 callback 函数时参数 previousValue 的值。若指定了初始值 initialValue,则 currentValue 则将使用数组第一个元素;否则 previousValue 将使用数组第一个元素,而 currentValue 将使用数组第二个元素。

五、二次封装函数

实现函数 partialUsingArguments,调用之后满足如下条件:
1、返回一个函数 result
2、调用 result 之后,返回的结果与调用函数 fn 的结果一致
3、fn 的调用参数为 partialUsingArguments 的第一个参数之后的全部参数以及 result 的调用参数

解:

function partialUsingArguments(fn) {  const arr = [].slice.call(arguments,1)  return function (...arr2) { // ...arr2表示用arr2接收所有参数,arr2是一个数组      return fn(...arr,...arr2)  }}

登录后复制

第一个arr数组表示的是partialUsingArguments接收的第一个参数之后的全部参数数组。

因为arguments是伪数组,不具有slice方法,所以这里通过随便一个数组(我选的是空数组[])来调用slice,然后通过call修改调用的这个slice的this指向,使其指向到arguments,这样就相当于是在arguments上使用slice方法。

call修改函数this指向并立即调用该函数,call第一个参数表示需要修改的this指向,之后的所有参数都会作为原函数的参数传递到原函数中。

slice(begin,end) 方法能切割数组,返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变。
不加end参数表示从 begin一直切割到最后。

【相关推荐:javascript视频教程、web前端】

以上就是JavaScript五个常用功能示例(总结分享)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2698328.html

(0)
上一篇 2025年3月7日 18:49:01
下一篇 2025年3月7日 18:49:09

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • JavaScript怎么拿捏箭头函数

    本篇文章给大家带来了关于javascript视频教程的相关知识,其中主要介绍了关于箭头函数的相关问题,包括了语法规则、简写规则、常见应用等等内容,下面一起来看一下,希望对大家有帮助。 【相关推荐:JavaScript视频教程、web前端】 …

    2025年3月7日
    200
  • JavaScript中Number类型常见误区背后原理及解决办法

    本篇文章给大家带来了关于javascript的相关知识,其中主要介绍了关于number类型的相关知识,包括了number类型的常见误区背后原理以及解决方法等内容,下面一起来看一下,希望对大家有帮助。 【相关推荐:JavaScript视频教程…

    2025年3月7日 编程技术
    200
  • 通过示例探索 9 个常用的 javascript 函数

    函数是 JavaScript 最重要的方面之一。如果没有 JavaScript 函数,它将非常有限。javascript 中的函数用于执行特定的操作或任务。 它们可以写入代码中,也可以使用 Function 构造函数创建。函数可以定义在其他…

    2025年3月7日
    200
  • JavaScript万字面试总结

    本篇文章给大家带来了关于javascript的相关知识,其中主要介绍了一些面试常见的问题总结,下面一起来看一下,希望对大家有帮助。 【相关推荐:JavaScript视频教程、web前端】 一、JS基础 1.1 Js有哪些数据类型 JavaS…

    2025年3月7日 编程技术
    200
  • 【前端必备】16个实用工具/网站分享

    推荐16个前端必备的实用工具与网站。总结分享一些日常工作中比较实用的软件和网站,这些网站你平时工作中大概率是会用到的,感觉不错的话可以点赞收藏 1. GitHub Desktop 对于新手来说,要记住那么多git命令可能有点困难,建议新手用…

    2025年3月7日 编程技术
    200
  • JavaScript常用的click事件总结分享

    本篇文章给大家带来了关于javascript的相关知识,其中主要介绍了关于常用的click时间的相关内容,包括了onclick异步性、同步性、事件触发的先后顺序以及时间注册等内容,下面一起来看一下,希望对大家有帮助。 【相关推荐:JavaS…

    2025年3月7日
    200
  • 深入了解JavaScript数组去重的五种方法

    本篇文章给大家带来了关于javascript的相关知识,其中主要介绍了关于数组去重的相关问题,包括了es6的set去重、双重for循环去重、indexof去重等等内容,下面一起来看一下,希望对大家有帮助。 【相关推荐:JavaScript视…

    2025年3月7日 编程技术
    200
  • 【整理分享】11个JS必须学会的实用工具方法

    本篇文章给大家整理分享javascript 必须学会的11 个工具方法(避免重复造轮子),希望对大家有所帮助! 前俩天也是更新了俩篇 JavaScript 的文章,当时由于时间问题,所以就是想到哪里写到哪里,因为对于技术文章只有三五句,几分…

    2025年3月7日
    200
  • 一文详解JavaScript中执行上下文与执行栈(图文结合)

    对于我们前端开发者来说理解JS程序内部执行机制是必要的,其中一个关键概念就是Js的执行上下文和执行栈。执行上下文是JS语言较为底层的知识,学习掌握有助于我们更深入的把握JS这门语言的本质,也有助于理解作用域、闭包、变量提升等相关知识。 1 …

    2025年3月7日 编程技术
    200
  • 一文详解JS中三元运算符的语法和常见用法

    本篇文章带大家探讨一下 javascript 中三元运算符的语法及其一些常见用法,希望对大家有所帮助! 三元运算符(也称为条件运算符)可用于执行内联条件检查,而不是使用if…else语句。它使代码更短,更易读。它可用于根据条件为…

    2025年3月7日
    200

发表回复

登录后才能评论