js复习-2操作符以及类型转换与流程控制语句

本文详细介绍了JavaScript中的操作符,包括算数、一元、赋值、比较和逻辑运算符,以及隐式类型转换规则。接着,讨论了如何显式转换不同类型到字符串、布尔和数字。最后,讲解了流程控制语句,如分支语句(if...else、switch)和循环语句(for、while、do...while),并提到了递归的概念。
摘要由CSDN通过智能技术生成

1.操作符

1.1.算数运算符

运算符 描述 例子 结果
+ 加法 var num = 1 + 2; 3
- 减法 var num = 4 - 3; 1
* 乘法 var num = 4 * 3; 12
/ 除法 var num = 6 / 3; 2
% 取余 var num = 7 % 3; 1
  • 正常的数据运算

var num1 = 8;
var num2 = 4;
​
console.log(num1 + num2); //12
console.log(num1 - num2); //4
console.log(num1 / num2); //2
console.log(num1 * num2); //32
console.log(num1 % num2); //0
  • 进行数据运算时,除'+'外,其他运算符可以自动将字符串数字隐形转成数字

var num1 = '8';
var num2 = '4';
​
console.log(num1 - num2); //4
console.log(num1 / num2); //2
console.log(num1 * num2); //32
console.log(num1 % num2); //0

1.2.一元运算符

JavaScript中有8种常用的一元运算符

运算符 描述
+ 将操作数转换成数字,字符串的拼接
- 将操作数转换成数字,同时变为负数
! 逻辑取反运算符
++ 递增
-- 递减
delete 删除数组或对象中特定索引的值
void void 运算符对任何值返回 undefined。
typeof 操作数放到typeof的后面,会返回当前操作数的类型,对于基本数值类型可以准确返回(除了null返回'object'),对于引用类型,Function会返回'function',其他都只会返回'object'

+ (正号)

1.'+'的第一种用法:进行数据相加

var num1 = 3;
var num2 = 5;
var sum = num1 + num2; //8

2.'+'放在数据的前面,就是取正数 放在字符串前面 NaN

var num = 6;
​
console.log(+'6'); // 6
console.log(+num); // 6
console.log(+‘a’); // NaN
console.log(+‘’); //  0

3.'+'与字符串运算时,就是字符串连接符

var a = 'hello';
var b = 'world';
console.log(a + b); // helloworld

4.'+'可以将数字字符串或布尔类型等隐式转换成number类型

var a = '123';
var b = true;
console.log(+a, +b); // 123  1

-(负号)

1.正、负号可以对数字进行取正或取负,其他运算符不能转换

var num1 = 6;
var num2 = -6;
console.log(-num1); //-6
console.log(+num1); //6
console.log(-num2); //6
console.log(+num2); //-6

2.正、负号可以将字符串数字隐式转换成数字

var num1 = '20';
var num2 = '-20';
console.log(-num1); //-20
console.log(+num1, typeof +num1); //20 number
console.log(-num2); //20
console.log(+num2, typeof +num2); //-20 number

!(取反)

经常被用作条件判断时的取反操作,类型判断等,还可以用'!'将变量转换为Boolean类型

var a;
if (!a) {}
console.log(!null);  //true
console.log(!undefined);  //true
console.log(!''); //true
console.log(!100);  //false
console.log(!'abc');  //false

++(递增)

通常用于循环语句,动画操作等。

++放在前面,并进行赋值:先累加,后赋值

var num = 0;
var a = ++num;
console.log(a); // 1
console.log(num); // 1
//num先自加1,再赋值给a

++放在后面,并进行赋值:先赋值,后累加

var num = 0;
var a = num++;
console.log(a); // 0
console.log(num); // 1
//先把num的值赋值给a,num再自加1

--(递减)

通常用于循环语句,动画操作等。使用方法与++类似。

delete

删除数组或对象中特定索引的值

var obj = {
  name:'zhangsan',
  age: 17
};
delete obj.name;
console.log(obj); // {age: 17}

var arr = [1,2,3,4,5];
delete arr[2];
console.log(arr); //[ 1, 2, <1 empty item>, 4, 5 ]

typeof

操作数放到typeof的后面,会返回当前操作数的类型,对于基本数值类型可以准确返回(除了null),对于引用类型,Function会返回'function',其他都只会返回'object'

操作数放到typeof的后面,会返回当前操作数的类型,对于数值类型可以准确返回,对于引用类型,Function会返回'function',其他都只会返回'object'

var obj = {
  name:'zhangsan',
  age: 17
};
var arr = [1,2,3,4,5];
console.log(typeof obj, typeof arr); //object object

void

丢弃表达式的返回值,而返回undefined 使用方式有void 表达式,void (表达式) 两种

扩展:JavaScript隐式转换

  • JavaScript中有两类数据类型:原始类型、对象类型:

原始类型(基础类型):

Undefined、Null、String、Number、Boolean、Symbol(es6新推出的,暂不考虑)

对象类型

object

  • 通过ToPrimitive将值转换为原始值

js引擎内部的抽象操作ToPrimitive有着这样的签名:

ToPrimitive(input, PreferredType?)

input是输入的值,即要转换的对象,必选;

preferedType是期望转换的基本类型,他可以是字符串,也可以是数字。选填,默认为number;

他只是一个转换标志,转化后的结果并不一定是这个参数值的类型,但是转换结果一定是一个原始值(或者报错)。

对于Date求原始值比较特殊,PreferredType是String,其他Object对象均为Number。**

  • 既然要隐式转换,就应该有一套转换规则,才能追踪最终转换成了什么

隐式转换中主要涉及到三种转换:

1、将值转为原始值,ToPrimitive()。

2、将值转为数字,ToNumber()。

3、将值转为字符串,ToString()。

  • 基本类型的转换

加减乘除:

1.字符串加数字,数字就会转成字符串。数字加数字或字符串加字符串不需要转换。

在加法的过程中,首先把等号左右两边进行了求原值ToPrimitive()操作,如果有两个或多个原始值,只要其中有一个是String类型,就把两个或多个原始值都进行转化字符串toString()操作,进行字符串拼接;否则把两个或多个原始值都进行转化数字toNumber()操作,进行数字相加。

var a = 1 + 2 + '3';
console.log(a, typeof a); // '33' string
var b = 1 + 2 + 3;
console.log(b, typeof b); // 6 number

2.数字减字符串,字符串转成数字。如果字符串不是纯数字就会转成NaN。字符串减数字也一样。两个字符串相减也先转成数字。

// -
10 - '20'    //-10
10 - 'one'   //NaN
10 - '100a'  //NaN

3.乘,除,大于ÿ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值