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

前端必备,25个最基本的JavaScript面试问题及答案

这种行为也支持放置左括号于JavaScript代码行的末尾,而不是新代码行开头的约定。正如这里所示,这不仅仅只是JavaScript中的一个风格偏好。 7. NaN 是什么?它的类型是什么?...你如何可靠地测试一个值是否等于 NaN ? NaN 属性代表一个“不是数字”的值。...这个特殊的值是因为运算不能执行而导致的,不能执行的原因要么是因为其中的运算对象之一非数字(例如, "abc" / 4),要么是因为运算的结果非数字(例如,除数为零)。...问题是,在ECMAScript规格说明中,整数只概念上存在:即,数字值总是存储为浮点值。...这就解释了为什么,有些令人奇怪的是, 1 && 2返回 2(而不是你以为的可能返回 true 或 1)。 20.执行下面的代码时将输出什么?请解释。

93430

37个JavaScript基本面试问题和解答(建议收藏)

这种行为也被认为是遵循了在JavaScript中将一行开头大括号放在行尾的约定,而不是在新行的开头。如此处所示,这不仅仅是JavaScript中的一种风格偏好。 7、什么是NaN?它的类型是什么?...如何可靠地测试一个值是否等于NaN? NaN属性表示“不是数字”的值。这个特殊值是由于一个操作数是非数字的(例如“abc”/ 4)或者因为操作的结果是非数字而无法执行的。...一方面,虽然NaN的意思是“不是数字”,但它的类型是,数字: console.log(typeof NaN === "number"); // logs "true" 此外,NaN相比任何事情 - 甚至本身...JavaScript中的数字全部用浮点精度处理,因此可能不会总是产生预期的结果。“ 上面提供的示例是演示此问题的经典案例。...例6:“A” - “B”+2输出:NaN说明:在前面的例子中,“A” - “B”产生NaN。但是任何运算符应用于NaN和其他数字操作数仍然会产生NaN。

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

    这 11 个前端小知识你不一定知道

    但是,在第 2 行,JavaScript 将空字符串视为 0,这是一个数字,因此无法通过 NaN 测试。 第 3 行也应该清楚,因为“a”是一个字符串,因此不是数字。...同样,在第 4 行中,“1”是一个字符串,但 JavaScript 在内部将其解析为数字 1,因此未能通过 NaN 测试。很奇怪吧?...在 JavaScript 中添加浮点数的行为非常奇怪。见下文。...11、typeOf 运算符 typeOf 是一个一元运算符,它返回一个字符串,表示变量的原始类型。我们知道 JavaScript 主要的对象,所以在大多数情况下,这会返回 object 。...这里有一些奇怪的例外。 typeOf NaN; // 'number' typeOf NaN 是一个看起来很奇怪的数字,但 NaN 从技术上讲是一种数字数据类型。

    97220

    JavaScript真假值知多少

    let x; x = 1; // x是一个数字 x = '1'; // x是一个字符串 x = [1]; // x是一个数组 当用`==`比较的时候,似乎不同的值和true都是相等的。...`,因为值的类型被考虑在内: // all false 1 === '1'; 1 === [1]; '1' === [1]; 在JavaScript里,会将值设定为六种原始数据类型其中的一种: · Undefined...仅有的一个例外`NaN`和任何值都不相等 建议 通过真假值判断可以了解最有经验的开发人员。新手或者从其它语言转过来的开发者会碰到一些问题!...幸运的是,在处理真假值变量的时候有一些简单的步骤可以捕获最难发现的错误。 1. 避免直接比较 当一个值和true或者false相等的时候,比较两个真假值不是必须的。...使用`===`运算符 使用全等运算符比较两个值,避免类型转换问题: // 不这样写 if (x == y) // ... // 如果x和y都是真值或者都是假值,执行 // 例如: x = null y

    76320

    20个稀奇古怪的 JavaScript 表达式,你要挑战回答一下嘛

    JavaScript是一种非常容错的编程语言,许多在其他编程语言中不合法的表达式在JavaScript中都能正常工作。 这导致了很多奇怪的代码。你想挑战它吗?...10, 2 逗号(,)在JavaScript中也是一个合法的操作符,它评估每个操作数(从左到右),并返回最后一个操作数的值。 因此,10,2返回2 !!"" ""是一个空字符串,它是一个虚值。...[]; // -> true 而+号会将真值转换为其数字表示: 1,所以 +!![] 返回 1。 true == "true" 双等运算符(==)检查其两个操作数是否相等,并返回一个布尔值结果。...但是当除数不是0时,JavaScript认为这个表达式的结果是Infinity。 而10**1000是一个很大数字,JS 无法正确表示这个数字。(JavaScript中最高的整数值是2^53-1)。...实际发生的情况是,它试图将字符串转换为数字,但失败了。 Number("true"); // -> NaN 在JavaScript的数字运算中,只要有一个值是NaN,运算的最终结果就一定是NaN。

    53520

    JavaScript 编程精解 中文第三版 一、值,类型和运算符

    它的原理与十进制数字相同,但不是 10 个不同的数字,而只有 2 个,每个数字的权重从右到左增加 2 倍。...它在数学上不合理,并且很快导致我们的下一个特殊数字:NaN。 NaN代表“不是数字”,即使它是数字类型的值。...first line And this is the second 当然,在某些情况下,你希望字符串中的反斜杠只是反斜杠,而不是特殊代码。...自动类型转换 在引言中,我提到 JavaScript 会尽可能接受几乎所有你给他的程序,甚至是那些做些奇怪事情的程序。...当左侧的值可以被转换成false时,&&运算符会返回左侧值,否则返回右侧值。 这两个运算符的另一个重要特性是,只在必要时求解其右侧的部分。

    1.1K80

    20个稀奇古怪的 JavaScript 表达式

    已收录,有一线大厂面试完整考点、资料以及我的系列文章。 JavaScript是一种非常容错的编程语言,许多在其他编程语言中不合法的表达式在JavaScript中都能正常工作。 这导致了很多奇怪的代码。...10, 2 逗号(,)在JavaScript中也是一个合法的操作符,它评估每个操作数(从左到右),并返回最后一个操作数的值。 因此,10,2返回2 !!"" ""是一个空字符串,它是一个虚值。...[]; // -> true 而+号会将真值转换为其数字表示: 1,所以 +!![] 返回 1。 true == "true" 双等运算符(==)检查其两个操作数是否相等,并返回一个布尔值结果。...但是当除数不是0时,JavaScript认为这个表达式的结果是Infinity。 而10**1000是一个很大数字,JS 无法正确表示这个数字。(JavaScript中最高的整数值是2^53-1)。...实际发生的情况是,它试图将字符串转换为数字,但失败了。 Number("true"); // -> NaN 在JavaScript的数字运算中,只要有一个值是NaN,运算的最终结果就一定是NaN。

    40320

    typeof运算符及实现jquery中的addClass,removeClass,hasClass

    Undefined类型:已经声明而未赋值的变量的值为”undefined”[实际上未声明的变量用typeof检测也会返回undefined] 2....isFinite():判断是否为有限数值,如果是则返回true,否则返回false。 特殊数值::NaN (not a number) 即表示不是一个数字,则isNaN判断不是数字时返回true。...NaN不能用于计算alert(NaN == NaN) //返回false 可用方法:isNaN(),判断是否为”不是数字”,不是数字则返回true,是数字则返回false。 5....二、javascript typeof运算符 typeof操作符,返回“表达式”的数据类型的字符串。...“function” 表示这个值是函数 三、JavaScript实现jQuery中的addClass()、removeClass()、hasClass() <pre name="code

    72231

    JavaScript运算符完全攻略

    JavaScript 中仅有一个三元运算符——条件运算符?:(if语句的简化形式)。 操作数的类型 运算符操作的数据并不是随意的,大部分都有类型限制。...console.log(true * "5"); //返回5 运算符的优先级 运算符的优先级决定执行运算的顺序。例如,1+2*3 结果是 7。而不是 9,因为乘法优先级高,虽然加号位于左侧。...使用小括号可以改变运算符的优先顺序。例如,(1+2)*3 结果是 9,而不是7。 在下面代码中,第二行与第三行返回结果相同,但是它们的运算顺序是不同的。...运算符一般不会对操作数本身产生影响。例如,a=b+c,其中的操作数 b 和 c 不会因为加法运算而导致自身的值发生变化。...如果有一个操作数不是数字,则返回 NaN。 console.log(2 - "1"); //返回1 console.log(2 - "a"); //返回NaN 使用值减去 0,可以快速把值转换为数字。

    23240

    检查 JavaScript 变量是否为数字的几种方式

    字符串形式的数字例如 "100" 不应该被处理,同时在 JavaScript中 NaN,Infinity 和 -Infinity 之类的特殊值也都是数字,不过我们将忽略这些值。...使用 Number.isNaN() 函数 标准的 Number 对象具有 isNaN() 方法。用来判断传入的参数值是否为 NaN。由于我们要检查变量是否为数字,所以需要在检查中要使用非运算符 !。...这种方法最适合在你知道自己的值是数字并且要检查它是否为 NaN 值的情况下,并不适合常规数字的。...它可以正确的判断 null 和 undefined 不是数字。但如果是 NaN 和 Infinity,它会返回 true。...尽管从技术角度上来说这是正确的,但 NaN 和 Infinity 是特殊的数字值,我们在大多数情况下都会忽略它们。 总结 本文研究了如何检查 JavaScript 中的变量是否为数字。

    2.8K41

    JavaScript类型、值和原生函数大揭秘, 前端开发者必看!

    操作符来说,因为他们是一个有效的数字字符,会被优先识别为数字常量的一部分,然后才是对象属性访问运算符。...是属性访问运算符。只是这样看着奇怪,实际情况中也很少见。在基本类型值上直接调用的方法并不多见,不过这并不代表不好或不对。...null: 指空值 undefined:指没有值 • NaN:NaN 是一个特殊值,它和自身并不相等,是唯一一个非自反(即 x === x 不成立的值),而 NaN != NaN 为 true。...操作符来说,因为他们是一个有效的数字字符,会被优先识别为数字常量的一部分,然后才是对象属性访问运算符。 5. 要检测一个值是否是整数,可以使用 ES6 中的 Number.isInteger(..)...NaN:NaN 是一个特殊值,它和自身并不相等,是唯一一个非自反(即 x === x 不成立的值),而 NaN != NaN 为 true。 8. 如何判断一个数是否是 NaN?

    8610

    Javascript 的逻辑运算符的使用技巧和其内在逻辑

    对于Java等强类型的语言,进行逻辑判断时,如 if(condition) 中condition所表示的表达式,其结果必须是返回的为true或false的表达式,而javascript 则不然,它可以允许...对于若类型的JavaScript语言而言,它有着不同的认识角度:它认为没有被定义的变量或者值为null 的变量,用在逻辑判断时,应该返回false;而对于存在的Object对象而言,应该返回true;对于数字而言...如果大家有阅读过Javascript框架如prototype或者jquery的经历,对于代码中的 两个!形式的运算符!! 就不足为奇了。 !!...,true && object 返回的是第二个参数object,而不是经过计算过的Boolean值;另外,如果第一个参数的Boolean值为false,其返回的也不是参数对应的Boolean值,而是参数本身...,null 的Boolean的值为false,但是result1的值为null,而不是对应的boolean值。

    65630

    千万别小看这些运算符背后的逻辑

    我们知道,+可以用来做数字运算,也可以用作字符串拼接,但是还有一些细节可能是大家不知道的。如果+运算符的两个操作数类型不一致,或者说两个操作数既不是字符串也不是数字,那么它的运算规则是什么?...如果其中一个操作数是字符串,另一个操作数也会被转为字符串,+运算符执行字符串拼接操作。 如果两个操作数都不是字符串或对象,则会进行算术加法运算(非数字的操作数会被强制转为数字)。...对于字符串比较的情况,如果两个字符串的第一个字符是相同的,则会比较第二个字符,以此类推。 这里有一个比较特殊的NaN,它与任何值做比较都会返回false。...而2147483648在32位带符号正数中是无法表示的,其值已经溢出了。 ?...计算机只理解二进制,与人类所理解的十进制之间永远存在一个精度问题,需要足够的精度才能更加准确地表示十进制,而计算机的位数永远都是有限的,这就是矛盾存在的地方,所以会出现溢出这种现象。

    75930

    数据类型、运算符、流程控制语句

    32位,其中最低的3位用来表述数据类型,object对应的值是000。...JavaScript 之中,只要是对象,就有对应的构造函数。因此,instanceof运算符的一个用处,是判断值的类型。...(1)含义 NaN是 JavaScript 的特殊值,表示“非数字”(Not a Number),主要出现在将字符串解析成数字出错的场合。...某些不是数值的值会直接转换为数值,例如"10"和"Boolean"。而任何不能被转换为数值的值都会导致这个函数返回true。...==与===有什么区别 历史背景 确定两个变量是否相等是编程中的一个非常重要的操作。在比较字符串、数值和布尔值的相等性时,问题还比较简单。但在涉及到对象的比较时,问题就变得复杂了。

    2.3K40

    JavaScript数字(数值)

    在 JavaScript 程序中,直接输入的任何数字都被视为数值直接量。 示例1 数值直接量可以细分为整型直接量和浮点型直接量。浮点数就是带有小数点的数值,而整数是不带小数点的数值。...var float = 1.2e3; 其中 e (或 E)表示底数,其值为 10,而 e 后面跟随的是 10 的指数。指数是一个整型数值,可以取正负值。...表示正无穷大的数值 Number.NEGATIVE_INFINITY 表示负无穷大的数值 NaN NaN(Not a Number,非数字值)是在 IEEE 754 中定义的一个特殊的数值。...+ '0' //0 + 'oops' //NaN 当 NaN 参与数学运算时,运算结果也是 NaN。因此,如果表达式的运算值为 NaN,那么可以推断其中至少一个运算数是 NaN。...示例 isFinite() 会试图把检测到的值转换为一个数字。如果值不是一个数字,那么使用 isFinite() 直接检测就不是有效的方法。

    21620

    你根本不懂Javascript(EP1~EP3.5 基础课)

    ,所有对象到布尔都是 true,包括包装类 new Boolean(false)是一个对象而不是原始值,它将转换为 true 对象到数字,对象到字符串比较复杂一些。...运算符使用时的数值转换 Javascript 里面的+运算符可以进行加法或者字符串连接操作。如果其中一个操作数是对象,那么就会将对象转为原始值而不是执行对象到数字的转换。...**并且,通过 valueOf()或者 toString()返回的原始值将本地直接使用而不会被强制转换为数字或字符串。...如果属性名称是一个保留字或者包含空格和标志点符号,或是一个数字(对于数组来说),则必须使用方括号的写法。 当属性名是通过运算得出的而不是固定值的时候,这时必须使用方括号写法。...如果操作数为对象,转换成原始值 转换后如果都是字符串那么按照字母表顺序比较 转换后如果至少一个不是字符串,那么两个都转为数字进行比较 如果转换后一个值是NaN那么一定返回false typeof typeof

    1.1K20
    领券