显示类型转换

1.Number():函数把对象的值转换为数字,如果对象的值无法转换为数字,那么 Number() 函数返回 NaN。

        var a = 'true';console.log(typeof(Number(a)) + '-' + Number(a)); // number-NaNvar a = '1a';console.log(typeof(Number(a)) + '-' + Number(a)); // number-NaNvar a = undefined;console.log(typeof(Number(a)) + '-' + Number(a)); // number-NaNvar a = null;console.log(typeof(Number(a)) + '-' + Number(a)); // number-0var a = '123';console.log(typeof(Number(a)) + '-' + Number(a)); //number-123var a = true;console.log(typeof(Number(a)) + '-' + Number(a)); //number-1

2.parseInt():函数可解析一个字符串,并返回一个整数

        var a = '3.14';console.log(typeof(parseInt(a)) + '-' + parseInt(a));//number-3var a = true;console.log(typeof(parseInt(a)) + '-' + parseInt(a));//number-NaNvar a = null;//undefined,NaNconsole.log(typeof(parseInt(a)) + '-' + parseInt(a));//number-NaNvar a='10';console.log(parseInt(a,16));//16var a='b';console.log(parseInt('abc123'));//NANvar a='b';console.log(parseInt('123abc'));//123

3.parseFloat():函数可解析一个字符串,并返回一个浮点数

     var a = 'b';console.log(parseFloat('3.1415')); //3.1415var num = parseFloat('3.1415')console.log(num.toFixed(2));//3.14  四舍五入

4.String():函数把需要转换的值转换为字符串,并返回。

        console.log(typeof(String(123))); //stringconsole.log(typeof(123 + '')); //string

5.toString()

        var str = '3.14';console.log(str.toString()); //3.14var str = undefined; //null也没有toString()console.log(str.toString()); //报错var str = '100';console.log(parseInt(str, 2));//二进制100变十进制  4console.log(parseInt(str, 2).toString(16));//4

6.Boolean()

        console.log(Boolean(1));//trueconsole.log(Boolean(null));//false  NAN 空字符串 0 undefined null

隐式类型转换

+运算符内部会隐式调用String()

     var a = 'a' + 1; //String(1) 'a'+'1'=a1console.log(a) //a1

运算符内部(-,*,/,%)会隐式调用Number()

     var a = '3' * 2; //* / - % str-->Number转换为数字console.log(a); //6var a = '1' > 2; //转换成Number >=<console.log(a); //false//转换成ASCII var a='a'>'b';var a=1=='1';console.log(a);//truevar a=1==='1';//不进行隐式转换var a=NaN==NaN;//false

内部会隐式调用Bollean()

     var a1=2>1>3;var a2=2>1==1;console.log(a1);//falseconsole.log(a2);//truevar a=undefined>0;//undefined和null既不大于0也不小于0 也不等于0var a=null==0;//falsevar a=undefined==null;//truevar a=undefined===null;//falseconsole.log(a)//false

运算符内部(++/–,正负)会隐式调用Number()

     var a = '123';a++;console.log(a); //124var num='123';console.log(typeof(+num));//numbervar num='abc';console.log(typeof(-num)+':'+-num);//number:NaN

isNaN() 需要经过Number()处理

     console.log(isNaN(NaN));//trueconsole.log(isNaN(undefined))//trueconsole.log(isNaN(null));//falseconsole.log(isNaN('ab'));//trueconsole.log(isNaN('null'));//trueconsole.log(isNaN(1));//false

经典面试题

1.if(typeof(a) &&(-true) +(+undefined)+ ' '){//"undefined" && "NaN "  (-1+NaN+' ')console.log('通过了')}else{console.log('没通过')}console.log(a);//通过了//a is not defined

未被定义的变量直接console.log会报引用错误,但是放在typeof里面不会出错。

2.console.log(!!' '+!!''-!!false || '未通过');
//1

或运算符遇到一个条件为真就直接输出运算结果,遇到条件为假的情况就继续判断。
分析:前面的’ ‘中是一个空格,空格是true,在两次!之后还是true,遇到+运算符转换为数字1,后面的’'是一个空字符串,它是false,两次!!后还是false,转换为数字0,由此可知,或运算符前面的计算结果是1,所以结果为1。

3.window.a || (window.a = '1');console.log(window.a);//'1'

分析:括号的面的优先级是最高的,先看括号里面的内容。

4.var =???if(a == 1 && a == 2 && a == 3){console.log("1");}

分析:与运算符条件条件全部为真才会输出运算结果。上述题中,a需要满足三个条件,此时应该想到复杂数据类型转换。
复杂数据类型转number顺序如下:
1.先使用valueOf()方法获取其原始值,如果原始值不是number类型,则使用 toString()方法转成string
2.再将string转成number运算
对象的valueOf()方法是可以重写的。

var a = {
i : 0,//声明一个属性i
valueOf:function ( ) {
return ++a.i;//每调用一次,让对象a的i属性自增一次并且返回
}
}
if (a == 1 && a == 2 && a == 3){//每一次运算时都会调用一次a的valueOf()方法

显示类型转换和隐式类型转换相关推荐

  1. js类型转换(隐式类型转换显式类型转换)

    我们需要了解任何计算都只能在相同的数据类型之间执行.如果我们强制JavaScript执行执行一些操作,例如在字符串中添加一个数字,在这种情况下,js编译器会默认将数字更改为字符串类型,然后将两者连接起 ...

  2. JS强制类型转换和隐式类型转换

    一.隐式类型转换 隐式类型转换会自动根据运算符进行类型转换.隐式类型转换的情况主要有以下几种. 如果表达式中同时存在字符串类型和数字类型的操作数,而运算符使用加号+,此时 JavaScript 会自动 ...

  3. 关于显式类型转换以及隐式类型转换

    哈喽嗷,铁汁们,咱们又见面了.是我嗷,一个不正经楼主. 首先提出一点,关于这个小细节专栏,看了绝对没好处(滑稽) 咳咳,咱们言归正传. 目录 隐式类型转换 ①算术运算中的隐式转换 规则一:字符和整数的 ...

  4. 显式类型转换和隐式类型转换区别?

    一般情况下,数据的类型的转换通常是由编译系统自动进行的,不需要人工干预,所以被称为隐式类型转换.但如果程序要求一定要将某一类型的数据转换为另外一种类型,则可以利用强制类型转换运算符进行转换,这种强制转 ...

  5. oracle c op,ORACLE中内部函数SYS_OP_C2C和隐式类型转换

    什么是SYS_OP_C2C呢?官方的介绍如下: SYS_OP_C2C is an internal function which does an implicit conversion of varc ...

  6. (基础)JavaScript类型转换(强制类型转换+隐式类型转换)

    JavaScript  中有五种基本数据类型(其中包括 String.Number.Boolean.Function.Symbol).三种对象类型(其中包括 Object.Date.Array)和两种 ...

  7. JavaScript类型转换之显式类型转换

    JavaScript中显式类型转换有六类,分别是Number(mix).parseInt(string).parseFloat(string).String(mix).toString().Boole ...

  8. c语言float转换为int_C语言的隐式类型转换和显示类型转换

    C语言是一种强类型语言,当使用一种类型的对象代替另外一种类型的对象进行操作时,必须首先进行类型转换. 类型转换的方式,一般可分为隐式类型转换和显示类型转换(也称为强制类型转换). 1.隐式类型转换 隐 ...

  9. ES5-3 循环、引用值初始、显示及隐式类型转换

    1. 循环 for循环的三个参数abc,a只执行一次,c在每次循环后执行 // 打印0-100的质数 1不是质数 var list = [2] for (var i = 3; i <= 100; ...

最新文章

  1. MySQL第8天:MySQL索引优化分析之SQL慢
  2. 使用文本文件(.txt)进行数据存取的技巧总结
  3. asarray java,Java
  4. zabbix cpu核数 windows_Zabbix的应用(6)----常见错误
  5. Java大数一些个人的见解
  6. mysql jdbc 占位符_JDBC中占位符报错是什么鬼啊
  7. 过拟合解决方法python_欠拟合、过拟合及其解决方法
  8. 【LeetCode】剑指 Offer 11. 旋转数组的最小数字
  9. 数据遍历打印得小列子
  10. 17秋 软件工程 团队作业 同学录
  11. js getday()获取值不对
  12. 这些图片用真的亮瞎我的双眼了
  13. c语言作业存款,C语言编程实现怎样存钱利最大
  14. inkscape如何裁剪_科学网—如何在Inkscape图中输入LaTeX公式? - 李金磊的博文
  15. 邮件smtp协议 mail
  16. Go GIF 动画
  17. ArcGIS10.2自带的Python2.7下安装pip
  18. 教你用笔记本充当无线路由,wifi上网了!!!
  19. 2023年Java面试题_Redis
  20. 用计算机绘制阀体各零件步骤,UG10.0经典实例之液压球阀建模方法

热门文章

  1. [Echarts可视化] 一.入门篇之简单绘制中国地图和贵州地区
  2. AVProVideo☀️九、“今朝若能同淋雪,此生也算共白头”。一曲《南山雪》,学习给视频做字幕。
  3. 停车场设计软件测试,停车场车位视频检测系统设计
  4. python爬虫基础(12:app数据爬取)
  5. 引入spring-boot-starter-redis包报错 :unknown
  6. Python学习日记07
  7. 左除与右除的区别--MATLAB
  8. 国产化服务器安装Mysql数据库
  9. 数据结构课程设计(四):行车路线问题(C++、图、迪杰斯特拉算法、最短路径)
  10. BeautifulSoup里“find_all“和“findAll“的区别