400个最常见的JavaScript面试问答(2)
大家好,我是海拥,专注于前端知识的分享。今天将给大家带来的是 400 个最常见的 JavaScript 面试问答第二部分。接下来我会持续更新(争取日更,也可能每周3-5篇),每小节大概 10 道题左右,总共会有 400 多道。
大家一定要记得点赞收藏呀!!!
11.什么是头等函数?
在 Javascript 中,函数是第一类对象。头等函数意味着该语言中的函数被视为任何其他变量。
例如,在这种语言中,一个函数可以作为参数传递给其他函数,可以由另一个函数返回,也可以作为一个值分配给一个变量。例如,在下面的示例中,分配给侦听器的处理函数 const handler = () => console.log ("This is a click handler function");document.addEventListener ("click", handler);12.什么是一阶函数?
一阶函数是不接受另一个函数作为参数并且不返回函数作为其返回值的函数。 const firstOrder = () => console.log ("I am a first order function!");13.什么是高阶函数?
高阶函数是接受另一个函数作为参数或返回一个函数作为返回值或两者兼而有之的函数。 const firstOrderFunc = () => console.log ("Hello, I am a First order function");const higherOrder = ReturnFirstOrderFunc => ReturnFirstOrderFunc();higherOrder(firstOrderFunc);14.什么是一元函数?
一元函数(即 monadic)是一个只接受一个参数的函数。它代表一个函数接受的单个参数。
让我们以一元函数为例, const unaryFunction = a => console.log (a + 10); // 给给定的参数加 1015.什么是柯里化函数?
柯里化是将具有多个参数的函数转换为每个只有一个参数的函数序列的过程。Currying 以数学家Haskell Curry 的名字命名。通过应用柯里化,n 元函数将其变成一元函数。
让我们举一个 n-ary 函数的例子,以及它如何变成一个柯里化函数, const multiArgFunction = (a, b, c) => a + b + c;console.log(multiArgFunction(1,2,3));// 6const curryUnaryFunction = a => b => c => a + b + c;curryUnaryFunction (1); // return a function: b => c => 1 + b + ccurryUnaryFunction (1) (2); // return a function: c => 3 + ccurryUnaryFunction (1) (2) (3); // return 数字 6
Curried 函数对于提高 代码复用性 和 函数组合 非常有用。 16.什么是纯函数?
一个纯函数是在返回值是由它的参数没有任何副作用只有确定的函数。即如果您在应用程序中调用具有相同参数 ‘n’ 次和 ‘n’ 个位置的函数,则它将始终返回相同的值。
我们举个例子来看看纯函数和非纯函数的区别, //不纯let numberArray = [];const impureAddNumber = number => numberArray.push(number);//纯const pureAddNumber = number => argNumberArray => argNumberArray.concat([number]);//显示结果console.log (impureAddNumber(6)); // returns 1console.log (numberArray); // returns [6]console.log (pureAddNumber(7) (numberArray)); // returns [6, 7]console.log (numberArray); // returns [6]
根据上面的代码片段,通过改变数组并返回一个与参数值无关的推送数字索引,推送函数本身是不纯的。而另一方面,Concat获取数组并将其与另一个数组连接起来,产生一个没有副作用的全新数组。此外,返回值是前一个数组的串联。
请记住,纯函数很重要,因为它们简化了单元测试,没有任何副作用,也不需要依赖注入。它们还避免了紧密耦合,并通过没有任何副作用使您的应用程序更难中断。这些原则通过优先使用const 而不是let与 ES6 的不变性概念结合在一起。 17.let 关键字的用途是什么?
let语句声明了一个块作用域局部变量。因此,使用 let 关键字定义的变量的范围仅限于使用它的块、语句或表达式。而使用var关键字声明的变量用于定义全局变量或局部变量,而不管块作用域如何。
我们举个例子来演示一下用法, let counter = 30;if (counter === 30) { let counter = 31; console.log(counter); // 31}console.log(counter); // 30 (因为这里不存在 if 块中的变量)18.let 和 var 有什么区别?
以表格格式列出差异
var
let
它从 JavaScript 开始就可用
作为 ES6 的一部分引入
它有函数作用域
它有块作用域
变量将被提升
已提升但未初始化
让我们举个例子看看区别,
function userDetails(username) { if(username) { console.log(salary); // 由于变量提升未定义 console.log(age); // 参考错误:初始化前无法访问"age" let age = 30; var salary = 10000; } console.log(salary); //10000 (可访问到适当的函数范围) console.log(age); //error:age未定义(由于块作用域)}userDetails("Haiyong");19. 为什么选择 let 这个名字作为关键字?
let 是一种数学语句,被早期的编程语言如Scheme和Basic 所采用。它是从数十种其他语言中借用而来的,这些语言let已经尽可能地作为传统关键字使用var。20.你如何在没有错误的情况下重新声明 switch 块中的变量?
如果您尝试在 a 中重新声明变量,switch block则会导致错误,因为只有一个块。例如,下面的代码块抛出如下语法错误, let counter = 1;switch(x) { case 0: let name; break; case 1: let name; // 重新声明的语法错误。 break;}
为避免此错误,您可以在 case 子句中创建一个嵌套块并创建一个新的块范围词法环境。 let counter = 1; switch(x) { case 0: { let name; break; } case 1: { let name; // 没有用于重新声明的 SyntaxError。 break; } }
希望大家能够给海海 点赞+收藏+关注 ,你的支持是海海更新的动力!后面我会持续分享面试经验 & 前端相关的专业知识。
最后祝大家都能找到满意的实习和 offer!
菲总统下令,撤回中菲铁路贷款协议,美国或从中作梗,中方回应7月16日,菲总统马科斯向菲交通部下令,就前总统杜特尔特与中方签署,总价值49亿美元的三个铁路贷款项目进行重新谈判,菲方副交通部长对外表示,之所以做出该决定,是因为菲方认为中方提出
97男篮亚洲杯14决赛资格赛,中国省队中国台北队对阵约旦队,最终,凭借着超级三分绝杀,约旦队9796淘汰了中国台北队,晋级到了8强,这也太刺激了。约旦队亚洲排名第8,实力还是比较强的,
特朗普呼吁美国应该像中国一样禁毒今日,美国前总统唐纳德特朗普在拉斯维加斯举行的支持共和党候选人乔隆巴多和亚当拉索特的集会上,再次重申禁毒问题,声称中国是唯一没有毒品问题的国家,并谈及中国当年因为鸦片,而被外敌轻而
吕丽萍公开悼念安倍后,三百万粉丝账号被禁言,儿子新戏也遭抵制吕丽萍悼念安倍连发痛哭的表情,今日账号被禁言,儿子新戏也遭到抵制近日,有一位已经沉寂多年的老戏骨,突然重新走进了大众的视野,但是得知真相后却让人啼笑皆非,原来她居然是因为一次言论争
8年前一上海20岁消防员牺牲,42岁母亲5次试管生子孩子又回来了1994年8月,一位上海母亲在医院里诞下一名男婴,24年后的2018年6月,同一位母亲,同一所医院,再次诞下一名女婴。这位母亲第二次生子的时候,已经有42岁高龄,而本应相差24岁的
她是自闭症孩子的母亲,辞职远走,让一颗颗孤独的星星发光头条好心人据联合国统计,截止到2021年,中国有1300万自闭症障碍者,其中14岁以下的儿童超过300万人。这些孩子不喜欢与人交流,很少和人对视,像是一颗颗孤独的星星,漂浮在自己的
我遇见你,如鹿归林今天中午,我弟来找我借相机。我从书房里翻出老公闲置的单反,检查电量的时候,发现了几张女人的裸体照片。没有露脸,但是姿势极其性感,各种私密部位一览无遗。我怔住了,当即胸口发闷,像是被
广东旧将正式签约,李楠连续招揽CBA名将,江苏队全力冲击季后赛广东旧将正式签约,李楠连续招揽CBA名将,江苏队全力冲击季后赛。目前的CBA夏季联赛仍旧在如火如荼进行中,而与此同时一些球队的引援也并没有停下脚步,根据知名记者的报道,上赛季的鱼腩
火烧靖国神社的中国小伙,他为什么要这么做?上海小伙火烧靖国神社,紧急逃往韩国避难,但是在韩国避难的他却依然不消停,又一把火烧了日本驻韩国大使馆,这就是来自中国上海的青年刘强。这是一个传奇人物,他的举动曾经轰动中日韩三国,刘
美媒称中美南海交锋,解放军苏众所周知,美国在国际上极少认错,哪怕自己的军事基地遍布全球,飞机航母开到了其他国家的家门口,美国也往往会倒打一耙,声称其他国家威胁了自己。7月16日,美国政客网站发表文章,声称此前
包惠僧叛逃国民党18年后要求回归,周总理你过去可不是普通党员1949年开国大典过后,周总理拿着一封电报匆匆来到丰泽园,呈递给毛主席。发来这封电报的人名叫包惠僧,是18年前叛逃到国民党的中共党员。如今发来电报,一方面是对新中国成立表示祝贺,另