JS操作符及类型

1.操作符

1.1一元运算符

8种常用的一元运算符

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

+(加号)

作用:

  1. 数据相加

  2. 对于数字取正数

  3. 字符串连接符

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

-(负号)

作用:

  1. 数据相减
  2. 对于数字取负数
  3. 将数字字符串或布尔类型等隐式转换成number类型

!(取反)

将变量转换为Boolean类型(true、false)

delete(删除)

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

typeof

返回数据类型,对于引用类型,function会返回’function’,其他都只返回’object’

void

丢弃表达式的返回值,返回undefined

1.2 赋值运算符
运算符例子等同于
=x = yx = y
+=x += yx = x + y
-=x -= yx = x - y
*=x *= yx = x * y
/=x /= yx = x / y
%=x %= yx = x % y
1.3 比较运算符

比较运算符的优先级低于算术运算符,高于赋值运算符,运算结果一般都为boolean

运算符描述比较返回
==等于x == 8false
x == 5true
x == “5”true
===值相等并且类型相等x === 5true
x === “5”false
!=不相等x != 8true
!==值不相等或类型不相等x !== 5false
x !== “5”true
x !== 8true
>大于x > 8false
<小于x < 8true
>=大于或等于x >= 8false
<=小于或等于x <= 8true
双等和三等的区别

双等表示只要值相等即可为真,而三等则要求不仅值相等,而且也要求类型相同。
建议:尽量使用严格运算符 三等。因为"=="不严谨,可能会带来一些违反直觉的后果。

注意点

1、对于string,number等基础类型,双等和三等是有区别的

1)不同类型间比较,双等之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等

2)同类型比较,直接进行“值”比较,两者结果一样

2、对于Array,Object等高级类型,双等和三等是没有区别的

进行“指针地址”比较

3、基础类型与高级类型,双等和三等是有区别的

1)对于==,将高级转化为基础类型,进行“值”比较

2)因为类型不同,===结果为false

非数值的情况下使用’>’’<’’>=’’<='
  • 进行比较时,若符号两侧有一侧是数值,则将非数值的转为数值,再进行比较,注意true转换为1,false转换为0任何值和NaN作比较结果都是false字符串转化成NaN
  • 进行比较时,若符号两侧都是字符串,比较字符的UniCode编码
1.4 逻辑运算符
运算符描述例子
&&and(x < 10 && y > 1) 为 true
||or````(x==5
!not!(x==y) 为 true
1.5 三目运算符

基本语法为: expression ? sentence1 : sentence2

条件为真,执行sentence1,为假时执行sentence2

2.类型转换

2.1 =>String类型
2.1.1 toString()函数

除了null、undefined,其他的基本数据类型都可使用该函数转换成String类型

2.1.2 +空字符串’’

通过’+'连接符,在后面拼接上一个空字符串,转换成String类型

console.log(typeof (true + ''));  //string

Number类型默认以十进制格式转换成String类型,可以通过传参,定义转换的进制

var num = 10;
console.log(num.toString());  //"10"
console.log(num.toString(2))	//"1010"
console.log(num.toString(8))	//"12"
console.log(num.toString(16))	//"a"
2.2 =>Boolean类型
2.2.1 Boolean包装器
Boolean('hello') //true
2.2.2 !!
!!'hello' //true
2.3 =>Number类型
2.3.1 Number包装器

null、undefined、boolean、number => Number

Number(true); //1
Number(false); //0
Number(null); //0
Number(undefined); //NaN
Number(10); //10 如果是数字值,原样输出

String => Number

Number("123"); //123  如果仅包含数值,转换为对应的数值
Number("234.1"); //234.1 解析为对应的小数 
Number("+12.1"); //12.1 首位为符号位,其余为为数值,转换为对应的数值 
Number("1+2.3"); // NaN 符号位出现在其他位置,解析为NaN 
Number("0xa"); //10 如果仅包含十六进制格式,转为为对应的十进制的值
Number("010"); //10【注意】不会当做八进制被解析,结果为10。 
Number(""); // 0 空字符串被转换为0 
Number("123ac"); // NaN 包含其他字符: NaN 
2.3.2 parseInt()函数

null、undefined、boolean => number 均转换为NaN

number => number 转换为整数

string =>number

parseInt("123"); //123;如果仅包含数值,转换为对应的数值
parseInt("234.1"); //234;小数点后面的数值省略 
parseInt("+12.1"); //12; 首位为符号位,其余为为数值,转换为整数 
parseInt("1+2.7"); //1; 符号位出现在其他位置,保留符号位前面的数值 
parseInt("0xa"); //10; 如果仅包含十六进制格式,转为为对应的十进制的值
parseInt("010"); //10; 【注意】不会当做八进制被解析,结果为10
parseInt(""); //NaN;空字符串被转换为NaN
parseInt("1+2.3"); //1;如果首位为数值,依次向后解析,找到连续的数值,直到遇到第一个非数值的,将之前获取的数值转换为Number返回 
parseInt("123ac"); //123;
2.3.3 parseFloat()函数

null、undefined、boolean => number 均转换为NaN

number => number

若是整数则转为整数,若是小数保留小数点,注意:10.0转为10

string =>number

转换规则同2.3.2

2.3.4 ‘+’(加号)
+"23"                    //23
+null                    //0
+undefined               //NaN

3.流程控制语句

3.1 条件语句
  • if 语句
  • if…else 语句
  • if…else if…else 语句
  • switch…case 语句
switch(n)
{
    case 1:
        执行代码块 1
        break;
    case 2:
        执行代码块 2
        break;
    default:case 1case 2 不同时执行的代码
}
3.2 循环语句
  • for - 循环代码块一定的次数
  • for/in - 循环遍历对象的属性
  • while - 当指定的条件为 true 时循环指定的代码块
  • do/while - 同样当指定的条件为 true 时循环指定的代码块
//循环数组
var arr=[10,'aa',20,30,40];
for(var i=0;i<arr.length;i++){
  console.log(i+"--"+arr[i]);
}
for(var key in arr){
  console.log(key+"--"+arr[key]);
}
3.3 递归
//使用递归实现阶乘
function factorial(n) {
  // 跳出条件
  if (n == 1) {
    return 1;
  }
  return factorial(n - 1) * n;
}
var result = factorial(4);
console.log(result);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值