判断javaScript变量是Ojbect类型还是Array类型
2021/9/26 22:11:18
本文主要是介绍判断javaScript变量是Ojbect类型还是Array类型,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
JavaScript是弱类型的语言,所以对变量的类型并没有强制控制类型。所以声明的变量可能会成为其他类型的变量, 所以在使用中经常会去判断变量的实际类型。 对于一般的变量我们会使用typeof来判断变量类型。
例如:在下面codesandbox中声明一个变量a,并赋值一个字符串'love you forever',然后使用typeof可以获得指定变量的类型,可以在web-preview看到结果是String类型,再次向变量a赋值数字123,则判断的类型为number,我再次向变量a赋值一个对象和一个数组,下面的web-preview结果显示却都是object,what。这是为什么?
所以去MDN查阅相关资料,MDN对于typeof的参数描述内容为"一个表示对象或原始值的表达式"以及对typeof可能返回值如下表:
类型 | 结果 |
---|---|
Undefined | "undefined" |
Null | "object" |
Boolean | "boolean" |
Number | "number" |
String | "string" |
Symbol(es6) | "symbol" |
宿主对象(BOM和DOM) | 取决于具体实现 |
Function | "function" |
其他对象 | "object" |
从表中似乎没有看到Array的字样,说明可能包含在其他对象,所以typeof不适合做array的判断。有没有其他的方式呢?查阅资料发现四种方法.
- 构造方法判断
let numbers = [1, 2, 3, 4, 5] let isArray = numbers.construstor === Array ? 'yes' : 'no' console.log(isArray)
- 原型判断
let numbers = [1, 2, 3, 4, 5] let isArray = Object.prototype.toString.call(numbers) === '[object Array]' ? 'yes' : 'no' console.log(isArray)
- instanceof判断
let numbers = [1, 2, 3, 4, 5] let isArray = numbers instanceof Array ? 'yes' : 'no' c
- Array内置的isArray方法判断
let numbers = [1, 2, 3, 4, 5] let isArray = Array.isArray(numbers) ? 'yes' : 'no' console.log(isArray)
下面是用codesandbox执行的结果
<iframe allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking" sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts" src="https://codesandbox.io/embed/gracious-ritchie-rrr14?fontsize=14&hidenavigation=1&theme=light&view=preview" style="width: 100%; height: 500px; border: 0; border-radius: 4px; overflow: hidden" title="gracious-ritchie-rrr14"></iframe>不知不觉又爬过了一个坑。编码路上没有捷径,没有代码量的积累,就没有值得飞跃。感谢各位看到这里,希望大家在不断地努力下能早日实现自己的前端梦。
这篇关于判断javaScript变量是Ojbect类型还是Array类型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-25初学者必备:订单系统资料详解与实操教程
- 2024-12-24内网穿透资料入门教程
- 2024-12-24微服务资料入门指南
- 2024-12-24微信支付系统资料入门教程
- 2024-12-24微信支付资料详解:新手入门指南
- 2024-12-24Hbase资料:新手入门教程
- 2024-12-24Java部署资料
- 2024-12-24Java订单系统资料:新手入门教程
- 2024-12-24Java分布式资料入门教程
- 2024-12-24Java监控系统资料详解与入门教程