【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 ```

相关推荐
励志码农1 小时前
JavaWeb 30 天入门:第二十三天 —— 监听器(Listener)
java·开发语言·spring boot·学习·servlet
天高云淡ylz1 小时前
子网掩码的隐形陷阱:为何能ping通却无法HTTPS访问
开发语言·php
智码看视界2 小时前
老梁聊全栈系列:(阶段一)架构思维与全局观
java·javascript·架构
希望20173 小时前
Golang Panic & Throw & Map/Channel 并发笔记
开发语言·golang
朗迹 - 张伟3 小时前
Golang安装笔记
开发语言·笔记·golang
yzx9910133 小时前
生活在数字世界:一份人人都能看懂的网络安全生存指南
运维·开发语言·网络·人工智能·自动化
小周同学@4 小时前
谈谈对this的理解
开发语言·前端·javascript
Wiktok4 小时前
Pyside6加载本地html文件并实现与Javascript进行通信
前端·javascript·html·pyside6
一只小风华~4 小时前
Vue:条件渲染 (Conditional Rendering)
前端·javascript·vue.js·typescript·前端框架
橙*^O^*安5 小时前
Go 语言基础:变量与常量
运维·开发语言·后端·golang·kubernetes