转码日记——Javascript笔记(2)

本文详细介绍了JavaScript中的算数运算符,包括非Number类型转换、与NaN运算的情况,以及一元运算符如自增和自减。还讨论了逻辑运算符,包括布尔值逻辑运算和非布尔值逻辑运算,以及关系运算符、赋值运算符和相等运算符的使用规则,特别是类型转换和全等运算符的区别。最后提到了条件运算符(三元运算符)的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算数运算符

对非Number类型的值进行运算时,会先转换成Number再进行运算 (除了字符串的加法)

任何值和NaN做运算都得NaN

+:

result = "123"+"456"; //返回123456
//对字符串进行加号的运算会拼成一个新串

//任何数据类型和字符串做加法,都会先转换成字符串再运算
a = true + "hi"; //返回truehi
b = “1”+ 123; //返回1231

//可以利用加法进行数据类型的转换,只需要加上一个空串(隐式类型转换)
var a = 12;
a = a + ""; 

可以用-、/、*将其他数据类型转换成Number (隐式类型转换)

var d = "23";
d = d - 0; //返回Number 23

一元运算符(+、-)

//可以对其他数据类型使用+,来使其转换成number
var a = true;
a = +a; // 返回1

a = "18";
a = +a; //返回18

var b = 1 ++"2"+3; //返回6 2前面有两个加号变成了number

自增和自减

- 通过自增可以使变量在自己的基础上增加1

var a = 1;
a++;  //原变量立刻自增1
++a;
console.log("a="+a); //返回a=2

//自增分为前++和后++,即++a和a++,无论是前还是后,原变量都会立刻自增1;但是a++和++a的值是不同的
// a是表达式,a++和++a是表达式
var a = 1;
a++;
console.log(a++); //返回1,是自增之前变量的值
++a;
console.log(++a); //返回2,是自增后的值

//如果调用两次,看清楚是在谁的基础上自增
var c = 10;
console.log(c++);
console.log(c++); //返回11,是在前一个c++的基础上自增

var e =20;
console.log(++e);//返回21
console.log(++e); //返回22

var d = 20;
console.log(++d + d++ + d); // 21+22+22

自增和自减差不多

逻辑运算符(!非/ &&与/ ||或)

一、布尔值的逻辑运算

(1)非运算— 对一个布尔值进行取反操作;如果是对非布尔值取反,则会先将数据类型转换成布尔值(可以利用该特点进行隐式转换)

var a = true;
a = !a;
console.log(a); //返回false

a = !!a;
console.log(a); //返回true 

// 对非布尔值取反,原理和Boolean()函数一样
var b = 10;
b = !!10; //取反两次
console.log(b); // true

(2)&&与运算— 两个值中只要有一个false就返回false;JS中的“与”是短路的与,如果第一个值是false就不会再看第二个值,直接返回false

(3)||或运算— 两个值中只要有一个值是true则返回true;“或”也是短路的或,如果第一个值是true则不会再检查第二个值

二、非布尔值的逻辑运算

先将其转换成布尔值再进行运算,最后返回原值而不是布尔值

//&&运算
result = 1 && 2;
console.log("result=" + result); // 返回result= 2
// 两个值都是true, 则会返回第二个值

result = 0 && 2;
console.log("result=" + result); // 返回result=0
//如果有false,则返回靠前的false
// ||或运算
result = 1 || 2;
console.log(result); //返回1
//如果第一个值为true,则直接返回第一个值

result = NaN || 2;
console.log(result); //返回2
//如果第一个值是false,直接返回第二个值

赋值运算符

var a = 10; //“=” 可以将符号右侧的值赋值给左侧
a += 5; // +=也是赋值运算符相当于 a = a + 5;
console.log(a); //返回15

// *=、-=等也都是一样的

关系运算符(比较大小)

如果关系成立返回true,不成立返回false

对于非number类型进行比较,先将其转换成Number

console.log(1>true); // false
console.log(1>=true); //true
console.log(1>"0"); //true

//任何值和NaN做任何比较都是false
console.log(10>"hello"); //false, hello先转成NaN

如果符号两侧的值都是字符串时,不会将其转换成Number进行比较,而是分别比较字符串中字符的unicode编码

console.log("a"<"b"); //true

console.log("abc"<"b"); //true
//比较字符编码的时候,是一位一位进行比较,如果满足直接返回true

#unicode编码的使用

(1)在JS中,\u+编码

(2)在HTML的<body>标签中,&#+编码,但是这里的编码是十进制的

相等运算符(==)

如果相等则返回true, 否则会返回false

var a = 10;
console.log(a == 4);// 返回false

如果比较的时候数据类型不同,会先进行自动类型转换,再进行比较。

//一般都是将其他数据类型转换成Number
console.log(true == "1"); //true

//但是如果是null,没有转number
console.log(null ==0); //false

//因为undefined是从null中衍生出来的
console.log(undefined == null); ///true

//NaN不和任何值相等,包括他本身
console.log(NaN == NaN); //false

//可以通过isNaN()函数来判断一个值是否为NaN
var b = NaN;
console.log(isNaN(b)); //true

不相等运算符(!=)和相等运算符一样,也会自动进行类型转换。

全等运算符(===)/ 不全等运算符(!==),基本和相等/不相等运算符的用法一致,但是不会做自动的类型转换。如果两个值的类型不同会直接返回false

条件运算符(三元运算符)

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

条件运算符在执行的时候,先对条件表达式进行求值(其他数据类型会转换成布尔值),true则执行语句1并返回执行结果,false则执行语句2并返回。

var a = 10;
var b = 20;
a>b? alert("a大"):alert("b大");
//可以用来获取最大值
var max = a>b? a : b;
//如果a>b,则将a赋值给max
//获取abc中的最大值
max = max>c? max : c;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值