JS运算符、基本数据类型和引用数据的值传递与引用传递

算术运算符

一元运算符

  • 递增递减操作符

    • 后置++,
      ,先使用a,后++,-- 。 前置++,–,先++,–,再使用a
  • 赋值运算符

    • 单个=表示赋值,将右侧的值赋给左侧的变量。 可以和其他算术运算符连用,常用的有*=,/=,%=,+=,-=
  • 加+ 相当于调用Number(),将其他数据类型转换为number类型

  • 减-
    1.将一元减应用于数值时,数值会变成负数。2. 将一元减应用于非数值时,遵循与一元加操作符相同的规则,最后将得到的数值转化为负数

比较运算符

  • !==

  • <

  • =

  • <=

  • ===

位运算符

  • & | 将值转成number的二进制,然后再进行与或操作

    • &

    • |

逻辑运算符

  • 逻辑与&&(同真才真,有假则假)

    • 可应用于任意数值。如果有一个操作数不是布尔类型,逻辑与就不一定返回boolean类型

    • 如果第一个操作数是null,NaN,undefined,false,0,""可被转换为false的值的时候返回该值

    • 如果第一个数为真,返回第二个数

      • var s1 = 8;
        var s2 = “briup”;
        var s3 = “”;
        var result = s1 && s2; var result2 = s3 && s2;
        //briup //空字符串
  • 逻辑或 ||(有真则真,同假才假)

    • 如果两个操作数都是null,NaN,undefined,false,0,""可被转换为false的值的时候返回该值

    • 如果第一个操作数是null,NaN,undefined,false,0,"" 则返回第二个操作数

    • 如果第一个操作数是真,直接返回第一个操作数。

  • 非(NOT)

    • 该操作符应用任何类型数值都返回一个【布尔值】。先将任意类型的数值转换为Boolean,然后 取反

      • !a ==> !Boolean(a)
        !0 //true
        !"" //true
        !NaN //true
        !false //true
    • 连用两次逻辑非 ,就可以将任意数据类型转化为Boolean类型 !!a ==> Boolean(a)
      !!"" //false

三目运算符

  • variable = boolean_expression ? true_value : false_value;

    • 如果boolean_expression为true,将true_value赋给variable,否则将false_value赋给variable

内存空间

栈区

  • 基本数据类型的变量和值,都存放在栈区

堆区

  • 引用数据类型的变量存放到栈区,引用内存的地址存放到栈区,内容存放到堆区
    值传递与引用传递

基本数据类型之间使用值传递

  • 引用数据类型之间使用引用传递(地址传递/址传递,传递的是钥匙,房间还是同一个)

类型转换

其他数据类型转换为String

  • toString()函数

    • 除了null,undefined,其他三种基本数据类型的变量均有一个toString()函数,该函数可以获取该变量 指定值的字符串表示。

    • 如果变量为number类型,默认情况下toString()是以十进制格式返回数值的字符串表示,通过传递参 数,可以输入以二进制,八进制,十六进制乃至任意有效进制格式的字符串值

  • String()函数 包装器,转换器

    • 可以将其他任意基本数据类型的值转换为字符串,包括null,undefined

    • 使用拼接空字符串进行转换 +""

其他数据类型转换为Boolean

  • Boolean()包装器 或者使用!!转换

    • String
      非空字符串True
      ”” False

    • Number
      任何非0 True
      0/NaN. false

    • Object
      任何对象 true
      null false

    • Undefined
      不适用
      undefined false

其他数据类型转换为Number

  • Number()包装器

    • 如果转换的值是null,undefined,boolean,number

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

  • parseInt()函数

    • 如果转换的值是null,undefined,boolean,均转换为NaN

    • 如果转换的值是Number

      • parseInt(10);//10 如果是整数值,原样输出
        parseInt(10.3);//10 如果是小数,舍去小数点一级后面的内容
    • 如果转换的值是string

  • parseFloat()函数

    • 如果转换的值是null,undefined,boolean,均转换为NaN

    • 如果转换的值是Number

      • parseFloat(10);//10 如果是整数值,原样输出
        parseFloat(10.1); //10.1 如果是小数,保留小数点,但是如果是10.0结果为10
    • 如果转换的值是string

加法+(m+n)

当m,n不为String,Object类型的时候,先将m,n转换为Number类型,然后再进行计算

当m,n有一个为String,无论另一个操作数为何(但不为对象)都要转换为String,然后再进行拼 接

当m,n 有一个为对象,如果该对象既重写toString,又重写了valueOf方法,先调用valueOf方法获 取返回值,将该返回值和另外一个操作数进行运算。如果该对象没有重写valueOf方法,将调用 toString方法获取返回值,将该返回值和另外一个操作数进行运算。

  • var o = {name:“briup”,valueOf:function(){return “1”;}} o+1; //“11”

特别注意

默认情况下,ECMAScript会将小数点后带有6个零以上的浮点数转化为科学计数法。 0.0000003 => 3e-7

在进行算术计算时,所有以八进制十六进制表示的数值都会被转换成十进制数值。

保存浮点数需要的内存是整数的两倍,因此ECMAScript会不失时机将浮点转换为整数

例如:
var a = 1.;
var b = 1.0; //都将解析为1

避免测试某个特定的浮点数值,是使用IEEE754数值的浮点计算的通病

例如:
0.1+0.2 //结果不是0.3,而是0.30000000000000004

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值