首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

针对高级前端的8个级JavaScript面试问题

更倾向于执行数字减法,而不考虑操作数的类型。当操作数不是数字类型,JavaScript 会执行隐式转换,将它们转换为数字。...词法作用域是由你在源代码中放置代码的位置在编译决定的。 当这段代码运行时,foo 位于 bar 函数内部。这种安排改变了作用域的动态。...回到我们最初的代码片段: const obj = { valueOf: () => 42, toString: () => 27 }; console.log(obj + ''); 当我运行这段代码...为什么? 在JavaScript中,对象键总是字符串(或 symbols),或者通过隐式强制转换自动转换为字符串。...那么,你认为输出会是什么这个问题相当复杂。那么,你认为输出结果会是什么?让我们一步一步地评估。

19130

针对高级前端的8个级JavaScript面试问题

更倾向于执行数字减法,而不考虑操作数的类型。当操作数不是数字类型,JavaScript 会执行隐式转换,将它们转换为数字。...词法作用域是由你在源代码中放置代码的位置在编译决定的。 当这段代码运行时,foo 位于 bar 函数内部。这种安排改变了作用域的动态。...回到我们最初的代码片段: const obj = { valueOf: () => 42, toString: () => 27 }; console.log(obj + ''); 当我运行这段代码...为什么? 在JavaScript中,对象键总是字符串(或 symbols),或者通过隐式强制转换自动转换为字符串。...那么,你认为输出会是什么这个问题相当复杂。那么,你认为输出结果会是什么?让我们一步一步地评估。

16310
您找到你想要的搜索结果了吗?
是的
没有找到

javascript你必须知道的面试题

7、神马是 NaN的类型是神马?怎么测试一个值是否等于 NaN?...10、在下面的代码中,数字 1-4 会以什么顺序输出?为什么会这样输出?...,自己去运行吧,需要注意三个点: 1、多个数字数字字符串混合运算,跟操作数的位置有关 console.log(2 + 1 + '3'); / /‘33’ console.log('3' + 2 +...我们年轻坚持一些自己认为是正确的东西的时候,总有些长辈,完全是出于善意好心,过来提醒你,告诉你这个社会不像你想的那样,如果你要想怎么样,就必须怎么怎么样。这种话你是不是听过很多次啊?...长大的过程中也不断地听到这种话,从来都不听,就一直坚持年轻认为是正确的东西。——罗永浩

66520

你不知道的this(1)

指向自身 人们很容易把this理解未指向函数本身体,这个推断从英语的角度上是说得通的。那么为什么需要从函数内部引用函数自身?...负责的开发一定会问 :"如果增加的count属性和预期的不一样,那我增加的是哪个count?" 实际上,如果他深入探索的话,他就会发现这段代码在无意间创建了一个全局变量count,他的值为NaN。...当然,如果他发现了这个奇怪的结果,一定会问 :“为什么全局,为什么的值是NaN不是其他更适合的值” function foo(num) { console.log('foo: ' + num)...{ foo(i); } } // foo: 6 // foo: 7 // foo: 8 // foo: 9 console.log(data.count); // 4 从某种角度上来说这个方法解决问题...每当你想要把this和词法作用域的查找混合使用时,一定要提醒自己,这是无法实现的 this 到底是什么 this是在运行时进行绑定的,并不是在编写绑定,的上下文取决于函数调用时的各种条件。

34010

【javascript】详解变量,值,类型和宿主对象

检测null的3种方式 1.这个是《你不知道的javascript》的解决方案 var a = null; if(!...,因为觉得这段代码有点丑陋,于是又想了一种: 3....找不同 这是大谷歌中打印的console对象: 这是火狐打印的console对象 Window对象 学习JS的筒子们一般都知道, “JS有有个保存全局变量的顶层对象, 叫Window对象,或者叫做...诡异而有趣的NaN 首先你要搞清楚的一个问题NaN的含义 让我们猜猜它是什么意思: 1. NaN不是number,也就是number之外的类型, 例如字符串,布尔值等等 2. ...你把大量的工作花费在了写+号上和写单引号上 (虽然以我歪曲的审美觉得这段代码看起来挺“漂亮”的) 而当你使用模板字符串就不用换行了: var str = ` <head

1.7K60

this 之谜揭底:从浅入深理解 JavaScript 中的 this 关键字(一)

的值为 NaN。如果你发现为什么是这么个奇怪的结果,那你肯定会有 “为什么的值是 NaN, 而不是其他值?” 的疑惑。...console.log( data.count ); // 4 • 虽然从某种角度来说,解决问题,但忽略了真正的问题——无法理解 this 的含义和工作原理,上述代码而是返回了舒适区——词法作用域。...); } foo(); // 这段代码你一共发现几处错误?...这是不可能实现的,你不能使用 this 引用一个词法作用域内部的东西。 this 到底是什么 • 说了这么多,那 this 到底是一个什么样的机制?...• 之前我们说过 this 是在运行时进行绑定的,而不是在编写绑定的,的上下文取决于函数调用时的各种条件。 • this 的绑定和函数声明的位置没有任何关系,只取决于函数的调用方式。

9210

所有程序员都应该遵守的11条规则

但作为一个程序员,所有这些东西并不是问题真正的解决方案,相反,它们只是帮助我们解决问题的简单工具。 在面对那些我们喜欢或是当前非常流行的特殊技术,我们必须非常小心,而不是变得过于疯狂。...一种经常出现的情况是,当我们写出一段“聪明”的代码这段代码不是特别的“清晰”。 这条规则非常重要,尤其是当我们思考我们要做一些特别“聪明”的事情。...这个看你怎么说了。 写代码的确是我们工作的一部分,但是,我们要尽可能努力的去用最少的代码解决问题。 所谓“最少的代码”并不是说我们只能用一个字母的变量名或者其它方式压缩我们的代码。...当我代码我会遵循很多”最佳实践“,但有时也会背离它们。 原则是永恒的,最佳实践是变通的. 11、力求精简 所有问题都可以进行分解. 最佳的解决方案往往是最简单的....傻瓜为问题提出复杂的解决方案.简化解决方案需要更多的精力和耐心,但这没有错。 花点时间。多点努力。力求精简. 你遵守什么规则? 上面是遵守的规则,那你? 你个人遵守什么规则?

72980

都2019了,为何你的 JavaScript 代码还如此冗长~

Promise也不错,但当代码规模越来越大,它们总是有些别扭。 解决方案就是async / await,能让阅读代码变得更容易,代码变得更整洁。...下面是部分摘要: 假值 长度为0的字符串 数字0 false undefined null NaN 真值 空数组 空对象 任何其他东西 当检查真值或假值,不需要明确写出比较,这相当于使用双等号 ==...比如,最常遇到但就是有关数字0的bug。 5. 逻辑运算符和三元运算符 这些运算符也是用来缩减代码的,节省下宝贵的代码行数。...链式操作 你遇到过这个问题吗?在访问嵌套对象的属性,无法事先确定对象的属性是否存在?...最初用的是webpack版本1,当时用起来很痛苦,需要不断修改尝试各种配置选项,在上面花了无数个小时想办法让工作。一旦弄好就绝不会再碰,以免不小心破坏什么

80730

什么柯里化是有用的

善于表达因为你以需要表达的方式来写的,它是重用因为...呃,你在重用,你还有什么更多的要求吗? Curry (the5fire注:这是原文作者写的一个柯里化的包)帮助你。...可以通过更少的参数(返回奇怪的结果)或者更多的参数(那些额外的参数会被忽略)调用它: add(1, 2, 'IGNORE ME') //= 3 add(1) //= NaN 一个柯里化的函数是这样——...针对这种情况我们能做些什么?啊——如果映射(map)可以被部分的配置到函数上,而不是集合上?...(另外,代你写了这段代码 —— 或许你可以写的更加优雅,跑题了)。...建议你把它用起来,并且熟悉。如果你已经熟悉了这些概念,怀疑你将会发现这些API直接了当并且令人满意。如果不是的话,你就要靠你自己和同事去考虑了。

76230

TypeScript 4.9 发布!重点新特性解读 ~

satisfies 关键字就是用来解决这个问题的,既能让我们验证表达式的类型是否与某个类型匹配,也可以保留基于值进行类型推断的能力: type Colors = "red" | "green" | "...但是,这个写法的前提是我们用到的对象有明确的类型,如果这个对象的属性没有明确的类型?...NaN 是一个特殊的数值,代表 “非数字” ,在 JS 中和任何值相比较都是 false,包括它自己: console.log(NaN == 0) // false console.log(NaN...== NaN) // true 这其实并不是 JavaScript 特有的问题,因为任何包含 IEEE-754 浮点数的语言都有相同的行为;但 JavaScript 的主要数字类型就是浮点数,并且 JavaScript...中的数字解析为 NaN 还挺常见的,所以在代码中去比较值是否等于 NaN 的情况还挺普遍的。

71220

【javascript】详解变量,值,类型和宿主对象

检测null的3种方式 1.这个是《你不知道的javascript》的解决方案 var a = null; if(!...,因为觉得这段代码有点丑陋,于是又想了一种: 3....找不同 这是大谷歌中打印的console对象: 这是火狐打印的console对象 Window对象 学习JS的筒子们一般都知道, “JS有有个保存全局变量的顶层对象, 叫Window对象,或者叫做...诡异而有趣的NaN 首先你要搞清楚的一个问题NaN的含义 让我们猜猜它是什么意思: 1. NaN不是number,也就是number之外的类型, 例如字符串,布尔值等等 2....你把大量的工作花费在了写+号上和写单引号上 (虽然以我歪曲的审美觉得这段代码看起来挺“漂亮”的) 而当你使用模板字符串就不用换行了: var str = ` <head

1.1K10

7行代码让B站崩溃3小,竟因“一个诡计多端的0”

基于这样的数学原理,我们再来看这段代码,似乎没什么问题: 但如果输入的b是个字符串“0”? B站的技术解析文章中提到,这段出事的代码是用Lua写的。...Lua在对一个数字字符串进行算术操作,会尝试将这个数字字符串转成一个数字。 在Lua语言中,数学运算n%0的结果是nan(Not A Number)。...我们模拟一下这个过程: 1、当b是一个字符串“0”,由于这个gcd函数没有对其进行类型校验,因此在碰上判定语句,“0”不等于0,代码中“return _gcd(b, a%b)”触发,返回_gcd(...也就是说,这个程序开始疯狂地原地转圈,并且为了一个永远得不到的结果,把CPU占了个100%,别的用户请求自然就处理不了了。 那么问题来了,这个“0”到底是怎么进去的?...不过,有人指出,死循环不罕见,罕见的是在SLB层、在分发过程出问题,它还不像在后台出问题很快重启解决

56120

ES6语法:函数新特性精讲(一)

今天我们学学ES6语法中,函数有什么变化。 虽然现在的有比ES6更高的版本,但是主流一般都是ES6。...我们都知道js是弱类型语言,不知道你有没有试过,或者学到过,js的函数声明过后,在调用这个函数的时候可以忽略这个函数所带的参数,就是说,声明的这个函数原本是带有参数的,但是在调用的时候是不需要传参的...,不会报错的,结果是什么?...你可能会说"20undefined",但是结果真不是这个,结果是"NaN",为什么?,仔细的同学就发现了,我们传的是一个20,而不是“20”,这个数字20和undefined相加的结果就成了NaN。...当我们传“20”的时候,答案就是“20undefined”,但是想说的是,如果这时不想传第一个值怎么办,想穿第二个值。往下看。

22940

是怎样克服对 React 的恐惧,然后爱上 React 的

如果你在两个月前问我对React的看法,很可能这样说: 的模板在哪里?javascript中的HTML在做些什么疯狂的事情?JSX开起来非常奇怪!快向开火,消灭它吧! ?...你从来都不需要写代码将其进行绑定。这多酷啊,呵? 但是等等,模型不是真相的来源么? 这里的视图模型从来获得的状态? 它是怎么知道模型发生了变化的? 有趣的问题啊....从这个示例中,看起来像是控制器有了状态,并且有类似模型的行为 - 或者也许是一个视图模型? 假设模型在其它的地方, 那它是如何保持与控制器的同步的? 的头开始有点儿疼了....当依赖发生变化时,对于可以任意次序执行的代码你很难推理出问题的起因。 模板和展示逻辑被人为的分离 视图扮演了什么角色? 扮演的就是向用户展示数据的角色。视图模型扮演的角色又是什么?...哥们,希望某些大公司组个超能天才开发者团真正解决这个问题… 拥抱Facebook的React 事实证明他们做到了。React实现了一个虚拟的DOM,一种给我们带来的圣杯的利器.

94220

打破你的认知,java,除以0一定会崩溃吗?

上面的代码段会输出什么? 上面的代码段会输出什么运行结果: ? ?...很多人都会觉得,费这么大劲,理解了,浮点数除以0不会崩溃,能有什么?平时我们写代码都不会除以0。这么骚的操作,才不会这么干。 是的,这个操作是有点骚,你不会这么干并不代表其他同事不会这么做。...在我们写业务代码的时候,这个知识点,很少很少能用上。 但是当我们刚好遇到除以0导致的bug的时候,这个时候就非常有用。...尤其像android的app,用户在线上遇到的bug,我们无法复现,只能通过日志去分析排查这个时候每个程序员都是福尔摩斯,根据一行行日志线索,配合实际代码,排查问题的可能性。...再然后,突然有一天发现,速度显示一串很奇怪的数字。 于是……接下来的故事,便如你们所想。 原本1小解决的bug,花了5个小时。 也正如,blog开头的引言所表达的。不要小看这些零零碎碎的知识点。

1.4K10

【offer 收割计划】这几道常见的面试题,你会几道

,在原来的块级盒子中,子元素开启 float ,会有父元素高度塌陷等问题,父元素的高度,不会根据浮动元素的高度设定,因此 flow-root 这种新的布局方式,解决这个问题,开启了 flow-root...后,就会触发 BFC,从而解决高度塌陷等问题 BFC 有哪些布局规则?...解决什么问题?...,由于 2、3 大于它们的基数 1、2 导致了它们无法被转化,返回 NaN 最终结果:[1, NaN, NaN] 那如果我们真的要实现这个数字字符串数组,转化成纯数字数组需要怎么做?...如下 五、实现一个 sleep 函数 sleep 函数就是一个等待的函数,代码运行到这里,需要等待 sleep 函数执行完毕后,再继续执行 这题考验的是对于异步编程的理解,回调函数、生成器、async

1K20

深度学习入门教程 第二讲

但是我们怎样给一个神经网络设计这样的算法?假设我们有一 个感知机网络,想要用它解决一些问题。例如,网络的输入可以是一幅手写数字的扫描图像。...我们想要网络学习权重和偏置,这样网络的输出正确分类这些数字。为了看清学习是怎样 工作的,假设我们把网络中的权重(或者偏置)做些微小的改动。就像我们⻢上会看到的,这一 属性会让学习变得可能。...这使得 逐步修改权重和偏置让网络接近期望行为变得困难。也许有其它聪明的方式解决这个问题。 但是目前为止,我们还没发现有什么办法能让感知机网络进行学习。...然而,我们将继续使用 S 型这个术语。 σ 的代数形式又是什么?我们怎样去理解?...但是在实践中,我们可以设定一个约定解决这个问题,例如,约定任何至少为 0.5 的输出 为表示“这是一个 9”,而其它小于 0.5 的输出为表示“不是一个 9”。

89780
领券