【JavaScript】[]和{} 的转换

背景

javascript 复制代码
([])? true:false
({})? true:false
([] == true)? true:false
({} == true)? true:false
([] === true)? true:false
({} === true)? true:false

分析

\]和{ } 都是复杂类型,以上都是三目运算符判断 **1.判断\[ \]和{ } 是否存在** 声明了这些已经分配了内存,肯定是存在的 ```javascript ([])? true:false //true ({})? true:false //false ``` **2.判断\[ \]和{ }和布尔值的转换** * == 含类型转换 * 如果一个操作数是对象,另一个是基本类型,对象首先会被转换为原始值(调用对象的valueOf()方法,返回自身的话就调用toString()方法),再布尔值转换为数字(‌true 转换为 1,‌false 转换为 0)‌ ```javascript ([] == true)? true:false //false //[]调用toString()为'' //''== 1 为false //''== 0 为true ``` ```javascript ({} == true)? true:false //false //'[object Object]' == 1 为false ``` **3.判断\[ \]和{ } === 的转换** * ===不含类型转换,比较的是地址,基本类型是栈,引用类型是堆 ```javascript ([] === true)? true:false //false ({} === true)? true:false //false ``` * 同类型也不相同,每次创建都会开辟一块新内存 ```javascript ([] === [])? true:false //false ({} === {})? true:false //false ```

相关推荐
lihongli0006 分钟前
ROS与Qt结合开发CAN控制界面(发布自定义的truck_send_can1消息)
开发语言·qt·ros
渣哥10 分钟前
代理选错,性能和功能全翻车!Spring AOP 的默认技术别再搞混
javascript·后端·面试
java1234_小锋15 分钟前
什么是Java三高架构?
java·开发语言·架构
如竟没有火炬25 分钟前
全排列——交换的思想
开发语言·数据结构·python·算法·leetcode·深度优先
WeilinerL31 分钟前
泛前端代码覆盖率探索之路
前端·javascript·测试
嵌入式小李.man38 分钟前
C++第十三篇:继承
开发语言·c++
Bryce李小白44 分钟前
Kotlin Flow 的使用
android·开发语言·kotlin
JNU freshman1 小时前
vue 之 import 的语法
前端·javascript·vue.js
剑亦未配妥1 小时前
Vue 2 响应式系统常见问题与解决方案(包含_demo以下划线开头命名的变量导致响应式丢失问题)
前端·javascript·vue.js
爱吃的强哥1 小时前
Vue2 封装二维码弹窗组件
javascript·vue.js