JavaScript学习笔记2

运算符(操作符)

通过运算符可以是一个或多个值进行运算,并获取运算结果
比如:typeof就是运算符,可以获得值的类型,它会将该值的类型以字符串的形式返回,number,string,boolean,undefined,object

算术运算符

加 减 乘 除 求余(+,-,*,/,%)

  • 对于非Number类型的值进行运算时,会将这些值转换为Number,然后再运算
  • 任何值和NaN做运算都是NaN
  • 运算是从左往右算的
  • 任何值做减法,乘法,除法运算都会自动转换为Number,所以可以利用这个特点做隐式类型转换,减0,乘1,除1

特殊:

加法

  • 两个字符串做加法运算时,会做拼串,即将两个字符串拼成一个字符串,并返回
  • 任何值和字符串做加法运算,都会先将其转换为字符串,再进行拼接运算
  • 我们可以使用(任何一种数据类型+空串)的方式即可将该类型转换为字符串,这是一种隐式的类型转换,由浏览器自动完成,实际上它也是调用了String方法
  • 例子
    var a=1+2+“3”; 其结果为33
    var a=“1”+2+3;其结果为123
一元运算符

只需要一个操作数,比如typeof

  • +正号:正号不会对数字产生任何影响

  • -负号:负号可以对数字进行负号的取反

  • 对于非Number值,会将其转换为Number类型,然后再进行运算。利用这个特点,可以对一个其他的数据类型使用+,来将其转换为number,和Number()的原理一样

  • 例子:

var result=1++"2"+3;

结果不为123 ,结果为6

自增和自减
在变量本身的基础上,加和减

  • 自增++:
    分为两种,两种都会立即使原变量的值自增1,不同的是:

    • 后加加 a++
      等于原变量的值,即自增之前的值
    • 前加加 ++a
      等于原变量的新值,即自增后的值

    例子:

var d=20;
   var result=d++ + ++d +d;

结果为64,即20+22+22

   var d=20;
   d=d++;

结果为d=20,上式等价于var e=d++; d=e;

  • 自减 - -
    分为两种,两种都会立即使原变量的值自增1,不同的是:
    • 后减减 a- -
      等于原变量的值,即自增之前的值
    • 前减减 - -a
      等于原变量的新值,即自增后的值

逻辑运算符

与 或 非(&&,||,!)
不改变本身的值,会返回结果

  • 对于非Boolean值进行运算,会将其转换为boolean值,然后再进行运算
    • 所以我们可以利用这个特点,来将其他的数据类型转换为布尔值,可以为任意的数据类型做两次非运算
    • 在进行&&与运算时,如果第一个值为false,第二个值就不会进行运算,直接返回false
    • 在进行| | 或运算时,如果第一个值为true,第二个值就不会进行运算,直接返回true
例子:
var a=10;
var b= false && a++ ;
b为false,a的值还为10,并没有进行加加运算
  • 对于非布尔值进行与或运算时,会将其转换为布尔值,再进行运算,并返回原值,(原值指的就是式子本身的值,比如a++,返回的就是a++,如果赋值了,那个值就是a的原值;再比如返回NaN,或者字符串)
  • 与运算:
    如果两个值都为true,则返回后边的原值
    如果两个值中有false,则返回靠前的原值
    (即,如果第一个值为true,则返回第二个值;
    如果第一个值为false,则直接返回)
  • 或运算
    如果第一个值为true,值直接返回第一个值的原值;
    如果第一个值为false,则直接返回第二个值

赋值运算符

  • a=10;
  • a+=5;

补充点:
变量的声明和赋值

  • var a=10,b=20;
    等价于var a=10;var b=20;
  • var a=b=10;
    等价于var a=10;var b=10;

关系运算符

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

大于,小于,等于,大于等于,小于等于

  • 非数值类的比较
  • 对于非数值比较,将其他的数据类型先转换成Number类型,再进行比较
  • 任何值和NaN做任何比较都是false
  • 如果符号两侧都是字符串时,不会将其转换为数字进行比较,比较的是字符串的字符的编码
    1、比较字符编码时是一位一位进行比较
    2、如果两位一样,则比较下一位,所以一般借用它来对英语进行排序
    3、比较中文时没有意义
    4、如果比较的两个字符串型的数字,可能会得到不可预期的结果
    5、比较两个字符串类型的数字时,一定一定一定要转型

Unicode编码

  • 在字符串中使用转义字符输入Unicode编码
    \u四位编码
  • 在网页中使用Unciode编码
  • &#编码:这里的编码需要十进制的

相等运算符==
比较两个值是否相等,如果相等返回true,否则返回false

  • 当使用==来比较两个值时,如果两个的数据类型不同时,则会自动进行类型转换,将其转换为相同的类型,然后再进行比较。
  • 大多数情况下都是将两个数据类型转换成Number类型,再进行比较
  • 特殊情况:
    null = = 0 返回false
    undefined == null 返回true(因为undefined衍生自null)
    NaN不和任何值相等,包括它本身
  • 可以通过isNaN()函数来判断一个值是否为NaN,如果该值是NaN则返回true,否则返回false。
    (使用该函数时,会自动将值转换成Number类型,然后再判断)
    例子: var a=NaN; console.log(isNaN(a)); 返回true

不相等 !=
相当于相等的反

全等===

用来判断两个值是否全等,它和相等类似,不同的是它不会做类型转换,如果两个值类型不同,直接返回false

  • null和undefined相等但是不全等

不全等 !==
全等的反

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

语法

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

执行流程

  • 首先对条件表达式进行求值,
    如果该值为true,则执行语句1,并返回执行结果,
    如果该值为false,则执行语句2,并返回执行结果
    如果条件非Boolean值,会将表达式结果进行转换

运算符的优先级

使用逗号,可以分割多个语句,一般可以在声明变量时使用
比如:
var a,b,c; / /声明多个变量
var a=1,b=2,c=3; / /声明多个变量并赋值
var a,b,c=1;/ /这里的ab都是undefined类型,c值为1
运算符优先级表:
在表中,越靠上优先级越高,优先级越高越优先计算,如果优先级一样,则从左往右计算
(图中第二行为括号,最后一行为逗号)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值