【笔记:JS基础】运算符

1、算数运算符

关于算数运算符说明:

1). 除了加法以外,对非Number类型的值进行运算时,都会先转换为Number然后在做运算。
2). 而做加法运算时,如果是两个字符串进行相加,则会做拼串操作,将两个字符连接为一个字符串。
3). 任何值和字符串做加法,都会先转换为字符串,然后再拼串。
4). 任何值和NaN做运算都得NaN。

  1. “ + ”:对两个值进行加法运算并返回结果
result = 456 + 789;
result = "你好" + "大帅哥";
result = 123 + "1";
result = true + "hello";
result = 123 + ""; //空字符串转换为Number类型之后为0
  1. “ - ”: 对两个值进行减法运算并返回结果
result = 100 - 5;
result = 100 - true;  //相当于100-1
  1. “ * ”: 对两个值进行乘法运算并返回结果
result = 2 * 2;
result = 2 * "8";
result = 2 * undefined; //undefined转换为Number类型之后为NaN
result = 2 * null; //null转换为Number类型之后为0
  1. “ / ”:对两个值进行除法运算并返回结果
result = 4 / 2;
result = 3 / 2;
  1. “ % ”:对两个值进行取余运算并返回结果
result = 4 % 2;  //输出结果为0
result = 3 % 2;  //输出结果为1
  1. “ ++ ”:自增可以使变量在原值的基础上自增1

自增可以使用前++(++a)后++ (a++)
无论是(++a)还是(a++)都会立即使原变量自增1

不同的是(++a)和(a++)的值是不同的:
(++a)的值是变量的新值(自增后的值),相当于已经执行两次(a++)

var a = 2;
result = ++a;  //输出结果为3

a++的值是变量的原值(自增前的值)

var a = 2;
result = a++;  //输出结果为2
result = a++;  //第二次执行输出结果才会为3
  1. “ – ”:自减可以使变量在原值的基础上自减1

自减可以使用前–(--a)还是 后–(a–)
无论是(–a)还是(a–)都会立即使原变量自减1

不同的是“ --a ”和“ a-- ”的值是不同的:
–a的值是变量的新值(自减后的值),相当于已经执行两次(a–)

var a = 2;
result = --a;  //输出结果为1

a–的值是变量的原值(自减前的值)

var a = 2;
result = a--;  //输出结果为2
result = a--;  //输出结果为1

2、一元运算符

一元运算符,相当于数学中将一个数值转换为正数或者负数,只需要一个操作数

  1. 正号:正号不会对数字产生任何影响。
  2. 负号:负号可以对数字进行负号的取反 。
对于非Number类型的值

1). 它会将先转换为Number,然后在运算。
2). 可以对一个其他的数据类型使用+,来将其转换为number。

3、逻辑运算符

! 非:可以用来对一个值进行非运算,所谓非运算就是值对一个布尔值进行取反操作,

类如:true变false,false变true

关于非运算说明

1). 如果对一个值进行两次取反,它不会变化。
2). 如果对非布尔值进行元素,则会将其转换为布尔值,然后再取反。
3). 所以我们可以利用该特点,来将一个其他的数据类型转换为布尔值。
4). 可以为一个任意数据类型取两次反,来将其转换为布尔值。

!true; //输出false
!false; //输出ture

&& 与:&&可以对符号两侧的值进行与运算并返回结果

关于与运算说明

1). 两个值中只要有一个值为false就返回false。
2). 只有两个值都为true时,才会返回true。
3). JS中的“与”属于短路的与,如果第一个值为false,则不会看第二个值。
4). 如果第一个值为false,则直接返回第一个值。

//如果两个值都是true则返回true
var result = true && true;
//只要有一个false,就返回false,所以下面三个的输出都是false
result = true && false;
result = false && true;
result = false && false;
true && alert("弹出框···");//第一个值为true时,才会检查第二个值,所以会输出后面的弹出框
false && alert("弹出框···");//第一个值为false时,不会检查第二个值,不会输出后面的弹出框

|| 或:||可以对符号两侧的值进行或运算并返回结果

关于或运算说明

1). 两个值中只要有一个true,就返回true。
2). 如果两个值都为false,才返回false。
3). JS中的“或”属于短路的或。
4). 如果第一个值为true,则不会检查第二个值。
5). 如果第一个值为false,则返回第二个值。

//两个都是false,则返回false
result = false || false;
//只有有一个true,就返回true,所以下面三个的输出都是true
result = true || false;
result = false || true ;
result = true || true ;
false || alert("弹出框···");//第一个值为false时,则会检查第二个值,所以会有弹出框
true || alert("弹出框···");//第一个值为true,则不再检查第二个值,所以不会有弹出框
&&、||不是布尔值的情况说明

对于非布尔值进行与或运算时,会先将其转换为布尔值,然后再运算,并且返回原值

4、赋值运算符

  1. “ = ”:可以将符号右侧的值赋值给符号左侧的变量
  2. “ += ” :a += 5 等价于 a = a + 5
  3. “ -= ” :a -= 5 等价于 a = a - 5
  4. = ” :a = 5 等价于 a = a5
  5. “ /= ” :a /= 5 等价于 a = a / 5
  6. “ %= ” :a %= 5 等价于 a = a % 5

5、关系运算符

通过关系运算符可以比较两个值之间的关系,如果关系成立它会返回true,如果关系不成立则返回false

  1. “ > ”:大于号判断符号左侧的值是否大于右侧的值。
  2. “ >= ”:大于等于判断符号左侧的值是否大于或等于右侧的值。
  3. “ < ”:小于号判断符号左侧的值是否小于右侧的值。
  4. “ <= ”:小于等于判断符号左侧的值是否小于或等于右侧的值。
var result = 5 > 10;//false
result = 5 > 4; //true
result = 5 > 5; //false
result = 5 >= 5; //true
result = 5 >= 4; //true
result = 5 < 4; //false
result = 4 <= Na; //true
非数值的情况

1). 对于非数值进行比较时,会将其转换为数字然后在比较。
2). 如果符号两侧的值都是字符串时,不会将其转换为数字进行比较,而会分别比较字符串中字符的Unicode编码。
3). 相等运算符用来比较两个值是否相等,如果相等会返回true,否则返回false。
4). 任何值和NaN做任何比较都是false

console.log("1" < "5"); //true
console.log("11" < "5"); //true
//比较两个字符串时,比较的是字符串的字符编码
console.log("a" < "b");//true
//比较字符编码时是一位一位进行比较
//如果两位一样,则比较下一位,所以借用它来对英文进行排序
console.log("abc" < "bcd");//true
//比较中文时没有意义
console.log("戒" > "我"); //true
//如果比较的两个字符串型的数字,可能会得到不可预期的结果
//注意:在比较两个字符串型的数字时,一定一定一定要转型
console.log("11123123123123123123" < +"5"); //true
  1. “ == ”:来做相等运算
    当使用==来比较两个值时,如果值的类型不同,则会自动进行类型转换,将其转换为相同的类型然后在比较。
console.log(a == 4); //false
console.log("1" == 1); //true
console.log(true == "1"); //true
console.log(null == 0); //false
/*
 * undefined 衍生自 null
 * 	所以这两个值做相等判断时,会返回true
 */
console.log(undefined == null);
/*
 * NaN不和任何值相等,包括他本身
 * 可以通过isNaN()函数来判断一个值是否是NaN
 * 如果该值是NaN则返回true,否则返回false
 */
console.log(NaN == NaN); //false
  1. “ != ”:不相等用来判断两个值是否不相等,如果不相等返回true,否则返回false。
    使用 != 来做不相等运算不相等也会对变量进行自动的类型转换,如果转换后相等它也会返回false。
console.log(10 != 5); //true
console.log(10 != 10); //false
console.log("abcd" != "abcd"); //"abcd"转换为Number类型时为NaN,所以会输出false
console.log("1" != 1);//false
  1. “ === ”:全等用来判断两个值是否全等,它和相等类似,不同的是它不会做自动的类型转换,如果两个值的类型不同,直接返回false。
console.log(123 === 123);//false
console.log("123" === 123);//false
console.log(null === undefined);//false
  1. “ !== ”:不全等用来判断两个值是否不全等,和不等类似,不同的是它不会做自动的类型转换,如果两个值的类型不同,直接返回true。
console.log("123" !== 123);//true
console.log(null !== undefined);//true

6、三元运算符

**语法:**条件表达式?语句1:语句2;

执行的流程:

1). 条件运算符在执行时,首先对条件表达式进行求值:
2). 如果该值为true,则执行语句1,并返回执行结果;
3). 如果该值为false,则执行语句2,并返回执行结果;
4). 如果条件的表达式的求值结果是一个非布尔值,会将其转换为布尔值然后在运算。

var a = 300;
var b = 143;
a > b ? alert("a大"):alert("b大");
//因为字符串转Boolean类型会为true,所以
"hello"?alert("语句1"):alert("语句2");
发布了20 篇原创文章 · 获赞 11 · 访问量 1751

猜你喜欢

转载自blog.csdn.net/qq_16221009/article/details/102868438