操作符及类型转换

值的传递和引用数据类型:

赋值是从右向左赋值,10赋值给了a,c-->b-->a,console.log(b);一定会报错,b并没有被赋值,如果改成c=b=a;这时b,c都会被赋值。

基本数据类型在进行值传递时,只是复制了一份属性值进行操作。

引用数据类型在进行值的传递时,传递的是引用地址。

栈区定义了一个 o1指向堆区lisi,将o1的属性传给o2,此时o1,o2的地址是相同的,o2直接将堆区内的name改为terry,所以o1访问时name也改变了。

操作符

算术操作符
  • a,b均为number类型,直接计算
  • a,b不是number类型,并且不是string或者object类型,将当前变量转换为number类型进行计算
  • 只要其中有一个变量为string类型,另一个变量转换为string类型进行字符串拼接(如果为object类型,默认调用toString())
  • 如果其中一个变量为object类型,另一个变量不为string,将另一个进行数据类型转换为number,然后调用object中valueOf/toString进行计算
    • a>默认调用toString()
    • b>当只重写toString(),调用tostring()
    • c>当只重写valueof()时,调用valueof()
    • d>当既重写了tostring又重写了valueof,调用valueof
比较运算符 返回值为boolean类型
  • a>b
    • 如果a,b不为number类型,将a,b转换为number类型之后再进行比较
    • 如果两个变量均为string类型:直接比较字符编码
  • =:赋值
    • 从右向左进行赋值
  • ==:相等比较
    • a,b均为number----直接对比
    • a,b都不是number---转换为number
    • a,b为string----字符编码
    • null==undefined:true
    • a,b为对象,比较引用地址
  • ===:全等比较
    • 只进行比较不进行数据类型转换,只要数据类型不同,即为不等
    • null===undefined:false
逻辑元素符
  • 逻辑与&&
    • 同真为真,有假则假
    • 如果第一个操作数为null/NaN/undefined/0/false/ "",直接返回第一个操作数
    • 如果第一个操作数为其他,返回第二个操作数
  • 逻辑或||
    • 有真则真,同假则假
    • 如果第一个操作数为null/NaN/undefined/0/false/"",直接返回第二个操作数
    • 如果第一个操作数为其他,返回第一个操作数
  • 逻辑非!
    • 直接取反
    • !a:先将a变量转换为boolean类型,然后后取反
    • 连用两次逻辑非,就可以将任意数据类型转化为Boolean类型
三目运算符

符合执行第一个表达式,不符合执行第二个表达式

一元操作符
  • 加法+: +a
    • +number--->number
    • 如果a不是number类型,将a转换为number
  • 减法-:-a 取反
  • ++ :
    • a++ 先操作变量,然后进行++操作 a=a+1
    • ++a 先进行++操作,然后操作变量 a=a-1
  • -- :
    • a--: a=a-1
    • --a: a=a-1
位运算

使用二进制进行计算,效率更高

js中:所有的位运算32位的2进制进行计算

原码--->反码-->补码

正数:原码=反码=补码

负数:反码=原码的符号位不变,其他位取反 补码=反码+1

128 64 32 16 8 4 2 1

-3:

1000 0000 0000 0000 0000 0000 0000 0011---->1000 0011 原码

1111 1100 反码 1111 1101 补码

4: 0000 0100 原码=反码=补码

sum=-3+4 10000 0001-->超过位数舍去 0000 0001 补码

符号位0为正数,所以补码=反码=原码

数据类型转换

  • null和undefined没有转换函数
  • Number: *--->number
    • Number()直接转换函数
    • parseInt():转换为整型
    • parseFloat():转换为浮点数
    • +a:Number()
  • Boolean: *-->boolean
    • !!a: 两次取反返回boolean
    • Boolean():转换函数
  • String : *--->string
    • String():转换函数 直接在变量外添加引号
    • toString() :
      • null和undefiend没有toString方法
      • toString(num):转换成num进制
    • a+' '

流程控制语句

分支语句
  • if语句:
  • switch-case语句:

break:跳出循环体

continue:跳出本次循环,继续下一次循环

循环语句
  • 三要素:初始条件 迭代条件 结束条件
  • for(初始条件;结束条件;迭代条件){ 循环体 }
  • 死循环 : for(;;){}
Label语句

name:for(){}

while语句 条件前置循环语句

开始条件;

while(结束条件){ ///循环体 //迭代条件}

死循环: while(true){}

do-while语句 后置条件语句

开始条件;

do{ // 循环体 //迭代条件} while(结束条件)

for in循环 增强for循环

用于遍历对象

with语句 将作用域定位
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值