[想试试看JavaScript ] 运算子与自动转型

运算子

所谓的运算子就是就是一些符号,运算广义来说就是对资料做的任何动作。
平常生活中的加减乘除是一种运算,不过在程序里的运算是泛指任何对资料做的动作。
运算子的类型很多,依照性质分类,大概分下面几种

  • 指派运算子 (Assignment Operator)
  • 算术运算子 (Arithmetic Operator)
  • 比较运算子 (Comparison Operator)
  • 逻辑运算子 (Logical Operator)
  • 字串运算子 (String Operator)
  • 特殊运算子 (Special Operator)
  • 位元运算子 (Bitwise Operator)

指派运算子 (Assignment Opereator)

指派运算子会根据 = 右边的值,为左边赋予一个值
例如

var a=1;
console.log(a); // 印出 1
var b=a;
console.log(b); // 印出 1,右边是变数也可以使用指派运算子

只要右边可以吐出一个值,就可以使用 = 放进左边。

+= (Addition assignment)

下面的程序码,可能刚学的时候会很奇怪,因为平常我们已经习惯阅读时,从左边阅读到右边

var n=2;
n=n+1;
console.log(n); // 印出 3

第一行:n 赋值为 2
第二行:将右边 n 加一再放进左边的 n
最後 n 等於 3

我们很常会将变数的资料做加法,并且马上放进原本的变数里面
有个比较简短的写法可以这样子写。

var n=2;
n+=1;
console.log(n) // 印出3

其实 n=n+1n+=1 是一样的
就是将原来的变数做加法,再将计算完的资料放进原来的变数里面。
资料型态是字串的情形也很常使用

var word="Today is ";
word+="good day";
console.log(word); // "Today is good day"

算术运算子 (Arithmetic)

基本的有,加减乘除

var n1=1+1;
var n2=1-1;
var n3=2*2;
var n4=6/3;
console.log(n1); // 2
console.log(n2); // 0
console.log(n3); // 4
console.log(n4); // 2

加法有些比较特别的状况
家法还可以对字串使用

var p="我";
var j="吃饭";

console.log(p+j); // 我吃饭

或者字串加数字

console.log(100+"100"); // 100100
console.log(100+"ABC"); // 100ABC

自动转型

其实,加法是算术运算子,两笔资料用上加法的话,电脑就会进行运算
Javascript 有一个特性,有「自动转型」这个特性,就是当两笔资料要进行运算,当这两笔资料的资料型态不一样,他会自动将资料转成一样的资料型态再做运算。
而其他的程序语言,可能资料型态不一样就无法做运算了,所以别的程序语言想将不同的资料型态做运算,就要多打额外的指令去操作。

这有优点也有缺点。
优点是只要熟记自动转型的规则,就可以用比较短的语法完成程序。
缺点是只要不熟转型的规则,资料就会变成预期以外的值。例如

var n1;
var n2;
var n3;
n1=100;
// 其他的程序码
// 其他的程序码
n2=n1+"100";
// 其他的程序码
// 其他的程序码
n3=n2*2

console.log(n3) // 200200

可能 n2 的地方,只是想要加数字 100 ,可是打错,打成字串 100。
当我们看到结果 n3 的资料变成 200200,就会很困惑,这不是我们要的结果。
而 n3 与 n2 之间隔了很多行,我们要再一堆程序码找问题在哪里就会比较困难。


<<:  Day 5 Capsule的应用(上)

>>:  Day 5 - 断点设定

django入门(五) — 简单范例(3)-静态档

简介: 静态档包含css、js以及图档。 建立静态档 按照下方结构建立static资料夹,以及css...

[NestJS 带你飞!] DAY12 - Interceptor

什麽是 Interceptor? 中文名称为拦截器,受到 剖面导向程序设计 (Aspect Orie...

离职倒数29天:远端道别

 开始上班後,从来没放过这麽长的假,而且还没出门旅行。给自己的每天的例行功课就是看书跟写日记,昨天把...

D17: 工程师太师了: 第9话

工程师太师了: 第9话 杂记: 最近在泡咖啡 被同事问说: 你一天都喝几杯咖啡阿? 我的回答:我大概...

成为海贼王的试炼就此展开

EKS试炼 今日会撰写YAML来建置EKS Cluster并使用eksctl执行建置,以及Lens去...