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

关于JS那些事:数据类型判断方法的几种方法和判断是不是空数组或对象

在我们日常写代码的时候会有要判断数组或者对象类型的时候。 而JS也给了我们很多判断类型的方法,但还是有很多特殊情况导致我们的判断失误。...如下: typeof 运算符 //typeof 运算符返回变量或表达式的类型 console.log(typeof 123) //'number' 这也是我们经常会用到的一个判断类型的方法 可是由于个别类型的特殊性导致我们的判断出现失误...原因是的本质是就是对象,所以typeof 会打印出来是个对象类型。 和数组一样的特殊类型还有很多,比如说: null(空),空用typeof打印出来是一个这玩意("")类型为字符串,这你说得清???...这个方法的返回结果是false才是数字,因为NaN的意思是不是一个数字,也就是非数字,所以跟正常的方法是反过来的,正常的是如果是数字就返回true,它这个判断是意思是 是不是一个非数字。...var a = 1, b = "hello" console.log(isNaN(a)) //false console.log(isNaN(b)) //false 这个方法即使你是一个空字符串或者一个空格他也会输出

1.7K30

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

在这篇博客文章中,我们将深入解释一些重要的 JavaScript 面试问题。我的目标是彻底解释这些面试问题,以便我们能够理解背后的基本概念,并希望在面试中解决其他类似的问题。...为了解决由于数组长度增长而导致的无限循环问题,可以在进入循环之前将数组的初始长度存储在一个变量中。然后,可以使用这个初始长度作为循环迭代的限制。...那么,你认为输出会是什么呢? 这个问题相当复杂。那么,你认为输出结果会是什么呢?让我们一步一步地来评估。...[]) // "boolean" 对于 [],它是一个对象,这是可以理解的,因为在JavaScript中,包括数组和函数在内的一切都是对象。但操作数 ![] 是如何具有布尔类型的呢?...我强烈建议你查看我的关于强制转换的详细博客文章。它以清晰和彻底的方式解释了这个概念。这里是链接。

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

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

    在这篇博客文章中,我们将深入解释一些重要的 JavaScript 面试问题。我的目标是彻底解释这些面试问题,以便我们能够理解背后的基本概念,并希望在面试中解决其他类似的问题。...为了解决由于数组长度增长而导致的无限循环问题,可以在进入循环之前将数组的初始长度存储在一个变量中。然后,可以使用这个初始长度作为循环迭代的限制。...那么,你认为输出会是什么呢? 这个问题相当复杂。那么,你认为输出结果会是什么呢?让我们一步一步地来评估。...[]) // "boolean" 对于 [],它是一个对象,这是可以理解的,因为在JavaScript中,包括数组和函数在内的一切都是对象。但操作数 ![] 是如何具有布尔类型的呢?...我强烈建议你查看我的关于强制转换的详细博客文章。它以清晰和彻底的方式解释了这个概念。这里是链接。

    18710

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

    null的3种方式 1.这个是《你不知道的javascript》的解决方案 var a = null; if(!...global对象” 我一直以来也有一个困惑:“既然(如果)Window对象和global对象是同一个东西的话,干嘛要取两个名称,你们玩我啊?”...一般情况下使用一个未声明(undeclared)的变量是会直接报错的,但typeof运算符的“安全机制”会规避这一点, 例如: // 此处a未声明 typeof a; 中使用了未曾声明过的变量a,但是无报错发生...诡异而有趣的NaN 首先你要搞清楚的一个问题是NaN的含义 让我们猜猜它是什么意思: 1. NaN不是number,也就是number之外的类型, 例如字符串,布尔值等等 2. ...console.log(NaN === NaN) // false 在所有数值类型中独一无二的逆天特性 在ES6前怎么检测"纯粹"的NaN呢?

    1.8K60

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

    // 检测引用类型 console.log('检测object', typeof {}); // 检测object object typeof 检测一个数值的类型, 返回的是一个字符串(小写),去表示这个变量数值的类型...null的3种方式 1.这个是《你不知道的javascript》的解决方案 var a = null; if(!...global对象” 我一直以来也有一个困惑:“既然(如果)Window对象和global对象是同一个东西的话,干嘛要取两个名称,你们玩我啊?”...一般情况下使用一个未声明(undeclared)的变量是会直接报错的,但typeof运算符的“安全机制”会规避这一点, 例如: // 此处a未声明 typeof a; 中使用了未曾声明过的变量a,但是无报错发生...诡异而有趣的NaN 首先你要搞清楚的一个问题是NaN的含义 让我们猜猜它是什么意思: 1. NaN不是number,也就是number之外的类型, 例如字符串,布尔值等等 2.

    1.2K10

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

    对未声明的变量执行typeof操作符同样也会返回undefined值。 Null:Null类型是第二个只有一个值的数据类型,这个特殊的值 是null。...: "undefined" : 如果一个变量没有声明,或声明了而没有初始化; // 变量声明了,但没有赋值 var i; i // undefined // 调用函数时,应该提供的参数没有提供,该参数等于...Object // true b instanceof Array // true b instanceof Object // true 3、如何判断一个变量是否是数字、字符串、布尔、函数 使用typeof...isNaN()函数接受一个参数,该参数可以是任何类型,而函数会判断这个参数是否"不是数值"。isNaN()在接收到一个值之后,会尝试将这个值转换为数值。...==与===有什么区别 历史背景 确定两个变量是否相等是编程中的一个非常重要的操作。在比较字符串、数值和布尔值的相等性时,问题还比较简单。但在涉及到对象的比较时,问题就变得复杂了。

    2.3K40

    【面试说】聊聊JavaScript中的数据类型

    没错,我也是这么回答的,只是这通常是第一个问题,由这个问题可以引出很多很多的问题,比如 Null 和 Undefined 有什么区别?前端的判空有哪些需要注意的?...typeof null 为什么是 object? 为什么 ES6 要提出 Symbol? BigInt 解决了什么问题? 为什么 0.1 + 0.2 !== 0.3? 你如何解决这个问题?...这意味着你不需要提前声明变量的类型,在程序运行的过程中,类型会被自动确定,也就是说你可以使用同一个变量保存不同类型的值 var foo = 42; // foo is a Number now foo...典型用法是: 变量被声明了,但没有赋值时,就等于 undefined。 调用函数时,应该提供的参数没有提供,该参数等于undefined。 对象没有赋值的属性,该属性的值为 undefined。...现在让我来利用这两点来解决前面我们提到问题: Symbol——我是独一无二最靓的仔 定义 ES6 引入了一种新的原始数据类型 Symbol,表示独一无二的值 let s = Symbol(); typeof

    55520

    JavaScript 有趣的冷知识:神奇的 NaN

    ,必须要用 typeof 这个方法来判断,接下来笔者就有个小问题要考考大家了,请大家猜猜看底下的代码会返回什么类型。...一个正常的变量自己等于自己一定会是 true ,假如只要有一个变量自己等于自己却是 false 的话,那我们就可以推断这个变量一定是 NaN 了,这方法是不是相当神奇呢,以后也不用去写 isNaN 了你以为的并不是你以为的一开始笔者先来用个简单的练习让大家小试身手一下...console.log(3 + 5) // ?相信大家看了应该都知道上面两个会输出 ab 以及 8 ,但这时候问题就来了,到底这个 + 是字符串的相加还是数字的相加呢?...相信看完上述的说明之后读者应该会觉得 + 这个运算符就是在做相加这件事情吧,但 JavaScript 有非常多看似很正常的运算符背后却不是做该运算符应该要做的动作,举例来说:console.log(+...打印出 banana看到这个标题相信读者应该会觉得笔者怪怪的,怎么会问这种小儿科的问题呢?不就简单的 console.log('banana') 就好了。

    5200

    Javascript的5种基本数据类型总结

    console.log(NaN==NaN); //false 针对NaN的特点,ES定义了isNaN()函数。这个函数接收一个参数,该参数可以是任何类型,函数会确定这个参数是否“不是数值”。...要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量,这个过程是在后台发生的。...,会在该变量上创建一个新值,然后再把该值复制到为新变量分配的位置上。...此时,a中保存的值为 100 ,当使用 a 来初始化 b 时,b 中保存的值也为100,但b中的100与a中的是完全独立的,该值只是a中的值的一个副本,此后, 这两个变量可以参加任何操作而相互不受影响...那么赋值操作后, 两个变量都保存了同一个对象地址,则这两个变量指向了同一个对象。因此,改变其中任何一个变量,都会相互影响。

    71730

    如果你要学JS——我正走在JS的路上(二)

    console.log(shanyu+'1');//和字符串相加结果是undefined1 console.log(shanyu+1);//和数字相加结果是NaN // null空值...> (3)如何检测数据类型 在JavaScript里面呢12和‘12’又不一样了,那我们怎么来进行区分嘞?...使用typeof检测变量数据类型(这样就可以轻松地知道该值是什么数据类型啦) //使用typeof检测变量数据类型 var num = 10;...条件: ①首先输入两个数 ​ ②然后进行输入数字的相加 ​ ③最后将结果数字输出 var one_num = prompt('请输入第一个数字');...“‘您最终的结果是’”这句话,这句话是一个字符串,这个会首先和第一个数相加,然后变成一整个字符串,最终再加上第二个数字,结果肯定都是字符串了!

    33200

    javascript你必须知道的面试题

    javascript你必须知道的面试题 ? 1、使用 typeof bar === "object" 判断 bar 是不是一个对象有神马潜在的弊端?如何避免这种弊端?...: b = 3;var a = b; 所以 b 成了全局变量,而 a 是自执行函数的一个局部变量。...(); return (str == str.split('').reverse().join('')); } 这个题我在 codewars 上碰到过,并收录了一些不错的解决方式,可以戳这里:Palindrome...2、 console.log(typeof 3); // number console.log(typeof (''+3)); //string 对于运算结果不能转换成数字的,将返回 NaN console.log...&& 3); //3 如果某个操作数为 false,则该操作数之后的操作数都不会被计算 逻辑或返回第一个是 true 的操作数 或者 最后一个是 false的操作数 console.log(1 ||

    69220

    一篇文章带你了解JavaScript中的语法,数据类型,流程控制语句以及函数

    标识符的规则: 一:第一个字符必须是,一个字母,下划线,或者是,一个美元符号 二:后面的字符,可以是字母,下划线,或是数字。...记住:局部变量的定义只在它的作用域里有效,不在里面时,这个变量就会被销毁。 那么如何解决这样的情况呢?...file 这是为什么呢?看到没有我这里没有加上var关键字操作符。这个时候的msg就是全局变量,可以在函数外部的如何地方被调用。 ?...file typeof null "object" // object这个值是对象或null undefined类型 undefined类型是一个值,即为undefined。...undefined值,一个变量还没有初始化时,默认为undefined值,没有必要去显式地设置为undefined值,但是,对于null来说,null值是一个空对象的指针,如果意在变量保存的是对象,但还没有真正的保存对象

    55110

    前端学习(27)~js学习(五): typeof和数据类型转换

    / 写法1 typeof 变量; // 写法2 typeof(变量); typeof 这个运算符的返回结果就是变量的类型。...因为 null 代表的是空对象。 备注 2:typeof NaN的返回值是 number,上一篇文章中讲过,NaN 是一个特殊的数字。...方法二:调用 toString()方法 语法: 变量.toString() 【重要】该方法不会影响到原变量,它会将转换的结果返回。...2.只要字符串中包含了非数字的内容(小数点按数字来算),则转换为 NaN。 3.如果字符串是一个空串或者是一个全是空格的字符串,则转换为 0。...这个字符串,如果我调用 parseInt()转成数字时,有些浏览器会当成 8 进制解析,有些会当成 10 进制解析。

    1.2K20
    领券