变量之间的转换-和隐式转换

值----字符串

1 .使用加号:数字,布尔,数组,函数,预定义对象,对象直接量,字符串连接优先级大于求和运算。以上所有的使用加号都会转为字符串。
2 .加号运算符不仅优先于连接操作,还会考虑顺序,当运算元的类型不一致的时候,加号会尝试把数值运算为字符串,在执行连接请求 1+1+‘1’=21 ,‘1’+1+1
3 .括号运算符能改变一行内表达式的运算符顺序。
4 .toString()方法。number类型是可以有参数添加的,默认转为10进制表示。
5 .数组:空数组转为空字符串"",如果数组中有null,undefined,同样当作空字符串处理[1,2,3,4]相当于调用数组的join方法 将各元素用逗号“,”拼接
[1,null,2,undefined,3] "1,,2,,3"
6 .函数:function a(){}转为字符串是“function a(){}”
7 .一般对象,全都是“[object object]”
8 .1+{a:1} "1[Object Object]" "1"+{a:1} 和全面的一样
9 .{a:1}+1 1 {a:1}+"1" 也是和前面的一样

数字转为字符串有了新的方法toFixed()其他es6语法

值--数字

1 .字符串类型 parseInt,parseFloat()也支持进制输入来实现转化为特定的操作。
2 .乘号运算符。变为数字,有个bug就是可以先乘1变为数字,然后在求和
3 .减法:2-‘1’=1 对字符串来说,如果转换失败,就返回NaN.

值转化为布尔值

1 .在js中,任何数据都可以被自动转为布尔值,在循环判断或参与逻辑运算符时,会自动转换
2 .!!会转换到真实环境下自己的表示的布尔值
3 .还有那6个兄弟
4 .使用Boolean()方法

数据类型的强制转换

1 .Boolean()生成新值,新值存放原始值直接转换的类型。
2 .Number()
3 .String()

引用类型的自动转换

1 .一般情况会允许出现这种情况么?
2 .如果非要拿对象和数组做运算,先调用value of()--toString()
3 .null,undefined没有toString()方法。
4 .

toString方法,返回这个对象的字符串

1 .null,undefined 没有toSring()
2 .字符串按原始值返回
3 .布尔值按原值返回
4 .数值

1.-,+浮点数无效,NaN-NaN , infinity,-infinity-原值
2.整数类型必须在括号里使用这个方法 ().toString().主要是.号会发生干扰
3.toString(2,6,8)会有进制转换
4 .对象会全返回[object object]。但是不会识别自定义类型Object.prototype.toString.call(a)
5.Function --函数源码(自定义函数),内置函数-[native code] !区分内置函数和自定义函数。果然一切皆独象。

valueOf()

1 .null,undefined 不是对象,没有这个方法
2 .布尔--原值值:boolean.valueOf() [native code]和toString()一样
3 .对象Object类型及自定义对象返回原值对象。

toString()返回字符串,valueOf():返回原对象。

隐式转换

字符串转换场景

1 .+ 所有和字符串相加的基础变量都将转为字符串
2 .- 字符串和数字之间使用减号连接,则会都转为数字进行计算
3 .[]+{} [object,object]
4 .{}+[] 0
5 .这俩看来是以后面的为准,复杂数据之间的转换
6 .当一侧为string类型,被识别为字符串拼接,会优先将另一侧的转换为字符串类型

"1"+1,11
1+"1",11

7 .当一侧为number,另一侧为原始类型,则会将原始类型转为number

1 .1+<=

8 .当一侧为Number类型,另一侧为引用类型,将引用类型和Number类型转换成字符串后拼接

[1,2,3]+1 ,1,2,3,+1 = 1,2,31
123+{} = 123[object object]

数字转换场景

1 .自增,自减运算符 ++,--
2 .布尔值转为数字的场景 1+true=2 1-false=1 第一个值是数字,运算符后面的布尔值就会转换为数字计算
3 .+"1" 也会转化为数字1
4 .1*"2"=2 字符串“2”也会转化为数字2
5 .其他的四则运算 *,%,/,或者关系运算符,>,<,>=,<=,==,!=,===,!=== ,如果比较运算符两边都是数字类型,直接比大小,如果是非数值进行比较的时候,会将他们转为数字然后比较。如果两边都是字符串的时候,会比较字符串中字符的unicode编码
6 .我们在对各种非Number类型运用数学运算符(- * /)时,会先将非Number类型转换为Number类型

1 .1-true =0
2 .1-null =1
3 .1*undefined NaN ,undefined 会转化为NaN
4 .2*["5"] 10
5 .

如果是ts的话,肯定是不会出现这种情况的

布尔值转换场景

1 .for 中第二个 x<10
2 .while
3 .if
4 .三元计算符
5 .||,&&,左边的操作数
6 . !变量

  1. undefined==null true undefined===null false
    8 .NaN不等于任何值,包括他自己
    9 .引用值不能进行==比较,因为栈中存在的仅仅是引用地址
    10 .对象和基础类型比较,会优先将字符串转为基础类型在进行基础类型的比较
1 .[]==[] false
2 .{}=={} false
3 .[]==false true
4 .[]==![] true
5 .[1,2,3]=="1,2,3" true  所有数组隐式转换为字符串时,只需将[]替换为""
6 .{a:1}=="a:1" false  所有对象隐式转换为字符串时,其值均为’[object Object]’
7 .引用变量.valueOf().toString()
8 .[]==[].valueOf().toString() true
9 .[]===[].valueOf().toString() false

特殊符号的转换

1 .所有的符号都不能被转为数字
2 .所有的符号都能被转为布尔值 true
3 .可以被转换成字符串symbol

比较场景下的数值转换

1 .==,宽松相等,两边可以进行类型转换
2 .=== ,严格相等,两边不能进行类型转换
3 .字符串与数字-字符串转为数字进行比较
4 .其他类型与布尔类型-先把布尔值转为数字,进行比较
5 .对象与非对象,执行对象的toPrimiitive 然后继续比较
6 .假值列表 undefined,null,NaN,false,+0,-0," "。注意,{},[],都不是假值
7 .null ==undefined是true,别的都是false
8 . !0==0 false !0转换为布尔值是true,0转换为布尔值是false
9 . !0==1
10 .特殊 new Date(xxx) - new Date()是数值 相加是字符串

toString和valueOf

1 .都是对象的方法
2 .toString返回的是字符串,valueof返回的是原对象
3 .undefined和null没有toString,valueOf方法
4 .包装对象的valueOf方法返回该包装对象对应的原始值
5 .使用toString可以区分内置函数和自定义函数

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,367评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,959评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,750评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,226评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,252评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,975评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,592评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,497评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,027评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,147评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,274评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,953评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,623评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,143评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,260评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,607评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,271评论 2 358

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,238评论 0 4
  • 值类型转换将值从一种类型转换为另一种类型通常称为类型转换,这是显示的情况;隐式的情况称为强制类型转换。JavaSc...
    xpwei阅读 3,551评论 0 5
  • 前年五月,机缘巧合下蜜月去了济州岛。 第一次出国还是蛮兴奋的,给老公准备了几条沙滩裤,自己准备了几条裙子,想象中的...
    念念915阅读 155评论 0 0
  • 我的微信名是“Yes man”,译为“好好先生”。大家不要以为好好先生就是烂好人的意思。 这是一部电影的名字,金·...
    他说他的不说阅读 195评论 0 3
  • 出行在外,总会想家,妈妈的饭菜,爸爸的唠叨,爷爷婆娑的背影,还有家乡落日的余晖! 我们那还有炊烟袅袅的景色,虽然已...
    山北阅读 196评论 0 1