Infinity + Infinity // Infinity
-Infinity + -Infinity // -Infinity
-Infinity + Infinity // NaN
Infinity - Infinity // NaN
-Infinity - -Infinity // NaN
-Infinity - Infinity // -Infinity
Infinity - -Infinity // Infinity
// ------------------- 乘 除 取余 -----------------------
Infinity * Infinity // Infinity
Infinity / Infinity // NaN
Infinity % Infinity // NaN
Infinity % -Infinity // NaN
// -------------- 0 & Infinity 系列 ----------------
Infinity * 0 // NaN
Infinity / 0 // Infinity
Infinity % 0 // NaN
0 % Infinity // 0
// -------------- 常数 & Infinity 系列 ---------------
Infinity * 100 // Infinity
Infinity / 100 // Infinity
Infinity % 100 // NaN
100 % Infinity // 100
-------------------------------------------------
其中一个是 NaN,那麽结果就必定是 NaN
10 + NaN // NaN
Infinity + NaN // NaN
-Infinity + NaN // NaN
当加号 + 两侧的其中一方是字串的情况下,加号 + 会将两者都视为「字串」连接在一起。
10 + 'abc' // "10abc"
true + 'abc' // "trueabc"
"abc" + undefined // "abcundefined"
"123" + null // "123null"
var num1 = 10;
var num2 = 100;
var str = "10 加 100 的数字会是" + num1 + num2;
若其中一方属於基本型别(string、boolean、undefined、null)且不是数字的情况,那麽 JavaScript 会在先在背後透过 Number() 尝试将数值转为「数字」,再进行运算。
当被除数为0时
100 - "50" // 50
100 - "abc" // NaN
100 - false // 100
100 - true // 99
100 - undefined // NaN
100 - null // 100
100 * "10" // 1000
100 * abc // NaN
100 * true // 100
100 * false // 0
100 * {} // NaN
- 会先透过物件的 valueOf() 方法
- 如果物件没有 valueOf() 方法的话,则是透过 toString() 先转成「字串」後,再以 Number() 尝试将数值转为「数字」後进行运算。
// 简单物件
100 - { } // NaN
// 自订物件,透过 Object.prototype.valueOf 来指定物件的 value
function Obj(number) {
this.num = number;
};
Obj.prototype.valueOf = function(){
return this.num;
};
var o = new Obj(50);
// 因为 o.valueOf() 的值为 50
100 - o // 50
两个等号 == 会自动将资料转型
true == 'true' // false
false == 'false' // false
false == 0 // true
true == 1 // true
[] == [] // false
[] == ![] // true
[] == '' // true
[] == 0 // true
[''] == '' // true
[0] == 0 // true
[0] == '' // false
[''] == 0 // true
null == undefined // true
[null] == '' // true
[null] == 0 // true
[undefined] == '' // true
[undefined] == 0 // true
1.以下变数 a, b, c, d, e, f 它们的值、型别各自为何?
let a = 1 +"2"+ 3 ;
let b = "1" * "1";
let c = 2 - "1";
let d = 1 > 2;
let e = 2 > 1;
let f = "我好棒" - 1;
Ans:
a = '123'、String;
b = 1、Number;
c = 1、Number;
d = false、boolean;
e = true、boolean;
f = NaN、Number;
2.分别印出甚麽答案
console.log(1 + "2" + "2")
console.log(1 - "1" + "2")
console.log("1" + "1" + "2")
console.log("A" - "B" + "2")
console.log("A" - "B" + 2)
Ans:122、02、112、NaN2、 NaN
3.进阶题,一元运算子
let a = 5
console.log( --a + "2" + "2")
console.log( a-- * "2" + "2")
console.log( --a * NaN + "2")
console.log(Infinity / --a + "2")
console.log(Infinity * 0 + "--a" )
Ans:422、102、NaN2、Infinity2、 NaN--a
<<: [Flutter ] Free fake API 为资料库,以 FutureBuilder + http 抓取
>>: Vue 使用 errorHandler, warnHandler 即时拦截网页错误
今天要来介绍 gulp 如何与 bower 结合 这里必须新增一个套件 main-bower-fil...
先公布昨天小练习的答案: 小练习:宣告一个公开、可读不可写、名为abc的function,参数a为...
请跟查看官方提供的文件 https://core.telegram.org/bots/api#ava...
经过两天,开始看得懂/a{3,}?/i是什麽意思了。 这是一个比较歪楼的比喻。 这是一段随意从网路上...
了解完套件更新的地方後,再回来玩其他的网路架构。依照day04的架构,严格说来树梅派wifi连上的其...