一、例子1:在浏览器控制台直接输入下面代码查看结果

例子


{} + []
{} + 3
{} + "2"
{} + ""
{} + false
{} + true
{} + null
{} + undefined
{} + " "
{} + " "
{} + NaN

例子解析


{} + []//结果为0
{} + 3//结果为3
{} + "2"//结果为2
{} + ""//结果为0
{} + false//结果为0
{} + true//结果为1
{} + null//结果为0
{} + undefined//结果为NaN
{} + " "//结果为0
{} + " "//结果为0
{} + NaN//结果为NaN


把{}写在最前面,系统会认为它是 代码块,里面没有内容,它就会被忽略。
{} + 数值 === + 数值 相当于把数值转化为数字型值;

知识点:

1.能转化为0的其它值有:“” 、 “   ”、 [] 、 false 、 null  

2.{}有两种涵义,一种是包围代码块的运算符,一种是放对象的符号,

把{}写在最前面,系统会认为它是 代码块,里面没有内容,它就会被忽略。

二、例子2:在浏览器控制台直接输入下面代码查看结果

例子



[] + {}
3 + {}
"2" + {}
"" + {}
false + {}
true + {}
null + {}
undefined + {}
" " + {}
"   " + {}
NaN + {}

例子解析

[] + {}//结果为"[object Object]"
3 + {}//结果为"3[object Object]"
"2" + {}//结果为"2[object Object]"
"" + {}//结果为"[object Object]"
false + {}//结果为"false[object Object]"
true + {}//结果为"true[object Object]"
null + {}//结果为"null[object Object]"
undefined + {}//结果为"undefined[object Object]"
" " + {}//结果为" [object Object]"
"   " + {}//结果为"   [object Object]"
NaN + {}//结果为"NaN[object Object]"

//把{}写到运算符后面,系统认为它是引用值对象,运算符会对该对象进行隐式类型转换
//数值 + {}  ===   数值  + {}转化成的字符串 
//相当于把{}转化为字符串型值;中间的 + 为字符串连接符

知识点:

把{}写到运算符后面,系统认为它是引用值对象,运算符会对该对象进行隐式类型转换

 

三、习题:在控制台输出下面表达式结果,想一想为什么



[] + {} == [] + {}

({} + []) === {} + []

{} + [] == {} + []

{} + "" === {} + "   " 

四、习题:在js文档中输出下面代码,查看结果,想一想为什么



console.log({} + []);
console.log({} + 3);
console.log({} + undefined);

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注