重温javascript --(一)值的介绍

值的介绍

一、 值类型:

  1. 原始值 stack栈: 遵循后进先出原则,中主要存放一些基本类型的变量和对象的引用。如:Number String Boolean undefined null symbol BigInt

    栈内不可修改值,内存满才会实现二次值覆盖

  2. 引用值 heap堆:用于复杂数据类型(引用类型)分配空间。 如:array object function ...date RegExp

    引用值在堆内存中,栈内存中存储的是堆内存的引用

  3. 图示:
    在这里插入图片描述

  4. 思考题:

    • 题:
      var a = {},var b = {},为什么 a===b 为 false
    • 解:
      1. 声明ab的时候,值{}依次在堆里创建了空间,并分别给ab暴露了一个指针路径
      2. ===比较的是ab的指针路径,虽然ab都为{},但是路径不一样,所以a===bfalse

二、运算符

顺序: 计算从左向右,赋值从右往左

  1. 算术运算符
    +:加法
    -:减法
    *:乘法
    /:除法
    %:取模(求余数)
    ++:递增
    --:递减
  2. 比较运算符
    ==:等于(类型转换后比较)
    ===:恒等(值和类型都相同)
    !=:不等于(类型转换后比较)
    !==:不恒等(值或类型不同)
    >:大于
    <:小于
    >=:大于或等于
    <=:小于或等于
    in:检查对象是否包含某个属性
    instanceof:检查对象是否是某个构造函数的实例
  3. 赋值运算符
    =:赋值
    +=:加等于
    -=:减等于
    *=:乘等于
    /=:除等于
  4. 逻辑运算符
    &&:逻辑与(and
    ||:逻辑或(or
    !:逻辑非(not):转成布尔值并取反
     data && fun() // `data`存在 执行`fun()`
     data || fun() // `data`或者`fun()`为`true`
     !'a' // false
     !''   // true
    
  5. 条件(三元)运算符
    ? ::条件(三元)运算符
    var a = 'a'
    var b = !!a ?  a : 'b'  // b = a   : 如果a是真的,则取a,否则取'b'
    
  6. 类型运算符
    • typeof:返回变量的类型:返回值为字符串类型, 全部小写

      typeof null返回结果为object,早期null 被视为一个特殊的对象,充当占位符

      简单封装一个typeof工具类:

      function getType(par) {
        var obj = {
          '[Object Object]': 'object',
          '[Object Array]': 'array',
          '[Object Number]': 'object - number',
          '[Object Boolean]': 'object - boolean',
          '[Object String]': 'object - string',
        }
        if (par === 'null') {
          return 'null';
        } else if (typeof (par) === 'object') {
          var str = Object.prototype.toString.call(par);
          return obj[str];
        } else {
          return typeof (par)
        }
      }
      
      • Object.prototype.toStringJavaScript 中一个非常重要的方法,它返回表示该对象的具体类型的字符串
      • call 方法主要用途是改变函数执行时的上下文(即 this 的指向)
    • delete:删除对象的属性

      var 定义的变量,delete 无法删除

      1. JavaScript 中,没有直接的方法可以“删除”一个作用域内的变量。一旦变量被声明,它就会一直存在,直到作用域结束或程序结束
      2. 你可以将变量的值设置为undefined 或其他默认值,以此来“清空”该变量
    • void:计算表达式并返回undefined
      <a href="javascript:void(0);">点击这里不会做任何事情</a>

  7. 其他运算符
    • ,逗号运算符:用于分隔多个表达式,并返回最后一个表达式的值。
      var a = (1 - 1, 1 + 1); // 值为: 2
    • ...:扩展运算符,用于数组或对象的展开

这里不介绍位运算符

三、 练习

  1. 题:// 一、交换a和b的值:
    var a = 1;
    var b = 2;
    
  • 解法1:借用中间变量
    var c = b; // c = 2
    b = a; // b = 1;
    a = c; // a = 2
    
  • 解法2:求和
    a = a + b;
    b = a - b; // b= 1
    a = a - b; // a= 2
    
  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值