1. 云栖社区>
  2. 技术文集>
  3. 列表>
  4. 正文

js操作符类型转换大全(前端面试题之操作符)

作者:用户 来源:互联网 时间:2016-11-07 18:22:17

5字符串结果consoleundefinedjs前端面试题双等号==NaN隐性类型转换双等号求模dirconsole.dir面试题大全

js操作符类型转换大全(前端面试题之操作符) - 摘要: 本文讲的是js操作符类型转换大全(前端面试题之操作符),  操作符运算符,在前端的面试题目中经常出现,很多朋友在对其运算的时候经常出错。说明对操作符运算还没有完全理解,我前面的一篇文章,javascript双等号

 操作符运算符,在前端的面试题目中经常出现,很多朋友在对其运算的时候经常出错。说明对操作符运算还没有完全理解,我前面的一篇文章,javascript双等号引起的类型转换,主要讲解双等号引起的类型转换。本篇文章可以说是对这篇文章的补充吧!

  首先,我们先来做一些题目吧!为了统一,我不混着来写这些题目,面试题目中,经常将这些题目混起来,这样对你的迷惑度会更大,为了更方便演示,我在这里分模块写了一些题目,大家可以看下!  

  1. //操作符字符串的隐性转换 
  2.  //乘法 
  3.  console.dir("-------以下乘法---------"); 
  4.  console.dir(5*"5"); 
  5.  console.dir(5*"a"); 
  6.  console.dir(5*NaN); 
  7.  console.dir(5*null); 
  8.  console.dir(5*undefined); 
  9.  console.dir(5*5); 
  10.  console.dir("-------以上乘法---------"); 
  11.  //除法 
  12.  console.dir("-------以下除法---------"); 
  13.  console.dir(5/"5"); 
  14.  console.dir(5/"a"); 
  15.  console.dir(5/NaN); 
  16.  console.dir(5/null); 
  17.  console.dir(null/5); 
  18.  console.dir(5/undefined); 
  19.  console.dir(5/5); 
  20.  console.dir(5/0); 
  21.  console.dir(0/5); 
  22.  console.dir(0/0); 
  23.  console.dir("-------以上除法---------");  
  24.  //取余、求模 
  25.  console.dir("-------以下取余、求模--------"); 
  26.  console.dir(16%"5"); 
  27.  console.dir(5%"a"); 
  28.  console.dir(5%NaN); 
  29.  console.dir(5%null); 
  30.  console.dir(null%5); 
  31.  console.dir(5%undefined); 
  32.  console.dir(5%5); 
  33.  console.dir(5%0); 
  34.  console.dir(0%5); 
  35.  console.dir(0%0); 
  36.  console.dir("-------以上取余、求模---------");  
  37.  
  38.  //加法 
  39.  console.dir("-------以下加法--------"); 
  40.  console.dir(16+"5"); 
  41.  console.dir(5+"a"); 
  42.  console.dir(5+NaN); 
  43.  console.dir(5+null); 
  44.  console.dir(5+undefined); 
  45.  console.dir(5+5); 
  46.  console.dir("两个数的和是"+5+5); 
  47.  console.dir("两个数的和是"+(5+5)); 
  48.  console.dir("-------以上加法--------");  
  49.  
  50.  //减法 
  51.  console.dir("-------以下减法--------"); 
  52.  console.dir(16-"5"); 
  53.  console.dir(5-"a"); 
  54.  console.dir(5-NaN); 
  55.  console.dir(5-null); 
  56.  console.dir(5-undefined); 
  57.  console.dir(5-5); 
  58.  console.dir(5-true); 
  59.  console.dir(5-"true"); 
  60.  console.dir(5-""); 
  61.  console.dir("两个数的差是"+5-5); 
  62.  console.dir("两个数的差是"+(5-5)); 
  63.  console.dir("-------以上减法--------");  
  64.  
  65.  //关系操作符 
  66.  console.dir("-------以下关系操作符--------"); 
  67.  console.dir(16>"5"); 
  68.  console.dir("16">"5"); 
  69.  console.dir(5<"a"); 
  70.  console.dir(5>=NaN); 
  71.  console.dir(5<NaN); 
  72.  console.dir(NaN>=NaN); 
  73.  console.dir(5>=null); 
  74.  console.dir(5>=undefined); 
  75.  console.dir(5>=5); 
  76.  console.dir(5>=true); 
  77.  console.dir(5>="true"); 
  78.  console.dir(5>=""); 
  79.  console.dir("Brick">"alphabet"); 
  80.  console.dir("brick">"alphabet"); 
  81.  console.dir("-------以上关系操作符--------");  

那么你对操作符类型转换基本上是理解了。假如您有错误,那么我们来详细的解释一下吧!

乘法

我们来看下前面的题目:


  1. console.dir(5*"5"); //25 
  2.  console.dir(5*"a");//NaN 
  3.  console.dir(5*NaN);//NaN 
  4.  console.dir(5*null);0 
  5.  console.dir(5*undefined);//NaN 
  6.  console.dir(5*5);//25 

下面说一下乘法隐性转换原则:

1、如果2个数值都是数字,那么直接进行乘法运算,(相信大家都会的,和小学数学一样,同时要注意数字的符号),如果乘积数值超过了ECMAscript的数值表示范围,则返回Infinity(正无穷)或者-Infinity(负无穷)

2、如果一个数是NaN,那么结果就是NaN

3、如果Infinity与0相乘,结果是NaN

4、假如一个操作符是数字,另外一个不是数值,那么先用Number()函数,将其进行转化,将转化出来的值与数字进行相乘。假如转换出来的结果出现NaN,那么结果就是NaN。

除法

我们看下上面的题目吧!


  1. console.dir(5/"5");//1    将字符转化为数字进行相除 
  2.  console.dir(5/"a");//NaN   将“a”用Number()函数进行转化,出来的值是NaN,结果就是NaN 
  3.  console.dir(5/NaN);//NaN 
  4.  console.dir(5/null);//Infinity  null用Number()函数进行转化,结果是0,那么5/0是正无穷 
  5.  console.dir(null/5);//0  同上0/5是0 
  6.  console.dir(5/undefined);//NaN   undefined 用Number()进行转化,结果是NaN 
  7.  console.dir(5/5);//1 
  8.  console.dir(5/0);//Infinity 
  9.  console.dir(0/5);//0 
  10.  console.dir(0/0);//NaN //0除以0结果是NaN 

下面说一下除法隐性转换原则:

和乘法类似,唯一多的一条就是0/0结果是NaN

取余、求模

求余在项目中用的最多的是求奇数偶数的时候。我们经常用一个数值与2进行求余,结果是0那么这个数是偶数,结果是1那么这个数是奇数。

看看上面的题目:


  1. console.dir(16%"5"); //1  将字符串5通过Number()转化为5然后进行求余 
  2.  console.dir(5%"a");//NaN 
  3.  console.dir(5%NaN);//NaN 
  4.  console.dir(5%null);//NaN  将null 通过Number()转化,结果是0,然后计算5%0 ,结果是NaN 
  5.  console.dir(null%5);//0  同上0%5 取余,结果是0 
  6.  console.dir(5%undefined);//NaN 
  7.  console.dir(5%5);//0 
  8.  console.dir(5%0);//NaN 
  9.  console.dir(0%5);//0 
  10.  console.dir(0%0);//NaN 
  11. console.dir(Infinity%Infinity);//NaN 
  12. console.dir(5%Infinity);//5 
  13.  console.dir(Infinity%5); //NaN 

下面说一下取余隐性转换原则:

和乘法一样,我说一下比较特别的地方吧!我们都知道被除数和除数的概念吧,小学的时候就学过的。

1、被除数是无穷大,除数是有限大的值,那么结果是NaN

2、被除数是有限大的值,除数是0,那么结果是NaN

3、Infinity%Infinity结果是NaN

4、被除数是有限大的值,除数是无穷大的值,结果是被除数。

5、被除数是0,结果是0

减法

看看上面的例子吧!


  1. console.dir(16-"5");//11 
  2.  console.dir(5-"a");//NaN 
  3.  console.dir(5-NaN);//NaN 
  4.  console.dir(5-null);//5 
  5.  console.dir(5-undefined);//NaN 
  6.  console.dir(5-5);//0 
  7.  console.dir(5-true);//4 
  8.  console.dir(5-"true");//NaN 
  9.  console.dir(5-"");//5 
  10.  console.dir(5-Infinity);//-Infinity 
  11.  console.dir(Infinity-Infinity);//NaN 
  12.  console.dir("两个数的差是"+5-5);//NaN 
  13.  console.dir("两个数的差是"+(5-5));//两个数的差是0 

下面说一下减法隐性转换原则:

和上面一样,相同的就不说了,我说一下减法特有的。

1、Infinity-Infinity结果是NaN

2、-Infinity-Infinity结果是-Infinity

3、一个数字减Infinity结果是-Infinity

4、Infinity-(-Infinity)结果是Infinity

5、如果操作数是对象,则调用对象valueOf方法,如果结果是NaN那么结果就是NaN。如果没有valueOf方法,那么调用toString()方法,并将得到的字符串转换为数值。

关系操作符

我们一起来看看上面的例子,关系运算符统一返回true或者false


  1. console.dir(16>"5"); //true 
  2.  console.dir("16">"5");//false 
  3.  console.dir(5<"a");//false 
  4.  console.dir(5>=NaN);//false 
  5.  console.dir(5<NaN);//false 
  6.  console.dir(NaN>=NaN);//false 
  7.  console.dir(5>=null);//true 
  8.  console.dir(5>=undefined);//false 
  9.  console.dir(5>=5);//true 
  10.  console.dir(5>=true);//true 
  11.  console.dir(5>="true");//false 
  12.  console.dir(5>="");//true  
  13.  console.dir("Brick">"alphabet");//false  B的字符串编码值是66 ,而a的字符串编码是97.因此false 
  14.  console.dir("brick">"alphabet");//true 小写字母b比a大,所以是true 

下面说一下关系运算符隐性转换原则:

还是和上面一样,相同的就不说了。

如果比较的两个数都是字符串,那么会比较字符串对应的字符串编码值。

双等号隐性转换

双等号具体请看:http://www.haorooms.com/post/js_yinxingleixing

加法运算

加法运算隐性转换,我之所以最后说,是因为加法运算隐性转换和之前的不一样,之前的所有的运算符号,只要一个是数字,另一个也默认使用Number()进行数字转换。加法运算不一样。加法运算只要其中一个是字符串,那么另外一个也会转换为字符串,然后进行字符串的拼接!

看看一开始的例子吧!


  1. console.dir(16+"5"); //156 
  2.  console.dir(5+"a");//5a 
  3.  console.dir(5+NaN);//NaN 
  4.  console.dir(5+null);//5 
  5.   console.dir('5'+null);//5null 
  6.  console.dir(5+undefined);//NaN 
  7.  console.dir(null+undefined);//NaN 
  8.  console.dir(5+5);//10 
  9.  console.dir("两个数的和是"+5+5);//两个数的和是55 
  10.  console.dir("两个数的和是"+(5+5));//两个数的和是10 

下面说一下加法运算符隐性转换原则:

1、有一个是字符串,那么另外一个也会转换为字符串进行拼接。假如一个是字符串,另外一个是null或者undefined,那么相加,null或者undefined就会调用String()方法,获得字符串“null”或者“undefined”,然后进行拼接。

2、假如一个数字加null或者undefined,那么还是把null或者undefined进行Number()转换之后再相加。

3、剩下的原则和其他的差不多,就不多说了。



以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有 的相关内容,欢迎继续使用右上角搜索按钮进行搜索5 , 字符串 , 结果 , console , undefined , js前端面试题 , 双等号== , NaN , 隐性类型转换 , 双等号 , 求模 , dir , console.dir 面试题大全 前端面试题大全、web前端面试题大全、前端面试题、web前端面试题、前端面试题及答案,以便于您获取更多的相关知识。

java 面试题大全,求大神们帮助一下~~~~

问题描述 java 面试题大全,求大神们帮助一下~~~~ java 面试题大全,求大神们帮助一下~~~~java 面试题大全,求大神们帮助一下~~~~java 面试题大全,求大神们帮助一下~~~~java 面试题大全,求大神们...

js前端面试题及答案整理(一)_基础知识

Part1 手写代码 现场手写代码是现在面试中很常见的一类面试题,考察基础的数据结构与算法能力。 1 数组去重的实现 基本数组去重 Array.prototype.unique = function(){ var result = []; this.forEach(function(v){ if(result.indexOf(v) < 0){ result.pus...

php面试题集-前端技术题

...出两点以上XHTML和HTML最显著的区别 xhtml必须强制指定文档类型DocType,html不需要; xhtml所有标签必须闭合,html比较随意。 css盒模型。 暂无答案 javascript中的prototype。 暂无答案 javascript中this对象的作用域。 暂无答案 IE和firefox事...

总结前端面试过程中最容易出现的问题

... 具体看文章:http://www.haorooms.com/post/js_yinxingleixing 十、js操作符,字符串截取等 具体请看:http://www.haorooms.com/post/js_czf_mst 字符串截取,substr 、substring等的区别 十一、js中继承中call和apply()的区别 用法差不多,传递参数不...

web前端面试-------javaScript基础知识点之数据类型

...t:这是数据类型的最关键地方 实例化对象方法:使用new操作符,一种是通过字面量表示法 Array(),Date()还有function()类型都是继承Object 什么是引用类型。 var obj=new Object(); 引用对象有一个很有趣的东西,obj这个变量只是引用了对象...

前三篇
后三篇
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一

云服务器9.9元/月,大学必备