一、同种数据类型的数值运算及比较
+、-、*、/、%、>、<、==、时都是把内容先转化为数字类型,注意特殊情况。
-
数字和数字
数字之间进行运算的时候,该怎么算就怎么算。
特殊的情况:
console.log(0/1) ; // 0 console.log(1/0) ; // infinity(无穷大) console.log(1%0) ; // NaN console.log(0/0) ; // NaN console.log(0%0) ; // NaN console.log(Number.MAX_VALUE) ; // 可表示的最大值
-
字符串和字符串
正常字符串
var a = 'i love you!'; var b = 'zhao li ying'; console.log(a + b); // i love you!zhao li ying // 字符串加法是拼接 console.log(a - b); // NAN console.log(a * b); // NAN console.log(a / b); // NAN console.log(a % b); // NAN
两个空字符串
var a = ''; var b = ''; console.log(a + b) ; // 空 console.log(a - b) ; // 0 console.log(a * b) ; // 0 console.log(a / b) ; // NAN console.log(a % b) ; // NAN
空字符串和正常字符串
var a = ''; var b = 'dasd'; console.log(a + b) ; // dasd console.log(a - b) ; // NAN console.log(a * b) ; // NAN console.log(a / b) ; // NAN console.log(a % b) ; // NAN
字符串的比较
字符串比较的是字符串字符的
unicode码值
(万国码)。从字符串
第一位
开始比,谁码值大,所属的字符串就大,如果第一位一样就比第二位
,以此类推。a = 'abc'; b = 'ab'; console.log(a > b); // true
-
boolean和boolean
boolean
间的数值运算就是先转化为数字
然后再运算。var a = true; var b = true; console.log(a + b) ; // 2 console.log(a - b) ; // 0 console.log(a * b) ; // 1 console.log(a / b) ; // 1 console.log(a % b) ; // 0
var a = true; var b = false; console.log(a + b) ; // 1 console.log(a - b) ; // 1 console.log(a * b) ; // 0 console.log(a / b) ; // infinity console.log(a % b) ; // NaN
boolean间的比较
var a = true; var b = false; console.log(a > b); // true console.log(a < b); // false
-
undefined和undefined
var a = undefined; var b = undefined; console.log(a + b) ; // NAN console.log(a - b) ; // NAN console.log(a * b) ; // NAN console.log(a / b) ; // NAN console.log(a % b) ; // NAN
undefined间的比较
var a = undefined; var b = undefined; console.log(a > b); // false console.log(a < b); // false console.log(a == b); // true
-
null和null
var a = null; var b = null; console.log(a + b) ; // 0 console.log(a - b) ; // 0 console.log(a * b) ; // 0 console.log(a / b) ; // NAN console.log(a % b) ; // NAN
null间的比较
var a = null; var b = null; console.log(a > b); // false console.log(a < b); // false console.log(a == b); // true
二、不同种数据类型的数值运算及比较
+、-、*、/、%、>、<、==、时都是把内容先转化为数字类型,注意特殊情况。
-
数字和其他数据类型的运算
-
数字和字符串
var a = 5 ; var b = ' ' ; console.log(a + b) ; // 5(拼接字符串) console.log(a - b) ; // 5(字符串转数字) console.log(a * b) ; // 0 console.log(a / b) ; // infinity console.log(a % b) ; // NAN console.log(a > b) ; // true(字符串转数字) console.log(a < b) ; // false console.log(a == b) ; // false
-
数字和boolean
var a = 5 ; var b = true ; console.log(a + b) ; // 6 console.log(a - b) ; // 4 console.log(a > b) ; // true console.log(a < b) ; // false console.log(a == b) ; // false
-
数字和undefined
var a = 5 ; var b = undefined ; console.log(a + b) ; // NAN console.log(a - b) ; // NAN console.log(a > b) ; // false console.log(a < b) ; // false console.log(a == b) ; // false console.log(NaN == NaN) ; // false
-
数字和null
var a = 5 ; var b = null ; console.log(a + b) ; // 5 console.log(a - b) ; // 5 console.log(a > b) ; // true console.log(a < b) ; // false console.log(a == b) ; // false
特殊情况
console.log(0 == null) ; // false
-
-
字符串和其他数据类型的运算
两个变量进行相加,只要其中一个变量是字符串,那就是字符串拼接。
-
字符串和boolean
普通字符串
a = 'sdfasf' ; b = true ; console.log(a + b) ; // sdfasftrue console.log(a - b) ; // NAN console.log(a > b) ; // false console.log(a < b) ; // false console.log(a == b) ; // false
纯数字字符串
a = '123' ; b = true ; console.log(a - b) ; // 122 console.log(a > b) ; // true console.log(a < b) ; // false console.log(a == b) ; // false
空字符串
a = '' ; b = true ; console.log(a - b) ; // -1 console.log(a > b) ; // false console.log(a < b) ; // true console.log(a == b) ; // false
-
字符串和undefined
普通字符串
a = 'sjhdga' ; b = undefined ; console.log(a + b) ; // sjhdgaundefined console.log(a - b) ; // NAN console.log(a > b) ; // false console.log(a < b) ; // false console.log(a == b) ; // false
纯数字字符串
a = '123' ; b = undefined ; console.log(a - b) ; // NAN console.log(a > b) ; // false console.log(a < b) ; // false console.log(a == b) ; // false
空字符串
a = '' ; b = undefined ; console.log(a - b) ; // NAN console.log(a > b) ; // false console.log(a < b) ; // false console.log(a == b) ; // false
-
字符串和null
普通字符串
a = 'sjhdga' ; b = null ; console.log(a + b) ; // sjhdganull console.log(a - b) ; // NAN console.log(a > b) ; // false console.log(a < b) ; // false console.log(a == b) ; // false
纯数字字符串
a = '123' ; b = null ; console.log(a - b) ; // 123 console.log(a > b) ; // true console.log(a < b) ; // false console.log(a == b) ; // false
空字符串
a = '' ; b = null ; console.log(a - b) ; // 0 console.log(a > b) ; // false console.log(a < b) ; // false
特殊情况
a = '' ; b = null ; console.log(a == b) ; // false // 空字符串和null不相等。
-
-
boolean和其他数据类型的运算
-
boolean和undefined
a = true; b = undefined; console.log(a + b); // NAN console.log(a - b); // NAN console.log(a > b); // false console.log(a < b); // false console.log(a == b); // false
-
boolean和null
a = true; b = null; console.log(a + b); // 1 console.log(a - b); // 1 console.log(a > b); // true console.log(a < b); // false console.log(a == b); // false
特殊情况
a = false; b = null; console.log(a == b); // false // false和null不相等。
-
-
undefined和其他类型的运算
三、null与NAN的特殊情况
当遇到null的时候,会有特殊情况发生。
-
0
和null
不相等 -
空字符串
和null
不相等 -
false
和null
不相等 -
undefined
和null
相等undefined
是未定义值的变量,null
是初始化一个空对象。
这俩在某一层面上都表达了一种“ 空 ”
的意思。
在其余的情况下,只要是不同的基本数据类型进行运算和比较:
-
第一步:先看是不是
+
如果是
+
,看有没有字符串
,如果有,就是拼接字符串
。 -
第二步:再看是不是
比较
如果是
比较
,看两边是不是都是字符串
,如果是,比较的是字符串的Unicode码
。 -
最后: 全部转
数字
任何东西跟NAN进行任何运算的结果都是NAN。(NAN若是与其他变量进行比较(<、>、==)则结果恒为false)
四、练习
怎么将一个字符串‘23’转化为数字23?
-
Number('23') ;
-
'23' - 0 ; // 最快的方法
-
parseInt('23') ;
-
parseFloat('23') ;