theme: condensed-night-purple

JavaScript

随手笔记总结,随时补充;如有误之处,请留言指出,在此先感谢各路大佬🙏

布尔类型 python 布尔类型的值包括哪些_字符串

数据类型

JavaScript 语言中类型集合由原始值和对象组成。

原始值(直接表示在语言底层的不可变数据)
  • 布尔类型 :布尔值是一种取值仅能为 真 或 假 的数据类型,它赋予了编程语言在逻辑上表达真 或 假 的能力;

Boolean:布尔值是一种取值只有 真 或 假 的数据类型,它可以在代码逻辑上表达真 或 假 的能力

  • 如果值为以下情况之一则为false
  • 0
  • -0
  • null
  • false -NaN
  • undefined
  • 空字符串「""
  • 否则为true
  • 其值不是undefined或null的任何对象「所有的对象类型」(包括其值为false的布尔对象)在传递给条件语句时都将计算为true
const f = new Boolean(false); if(f){// 执行} 
  const f = Boolean(false); if(f){// 执行}
  • 转换布尔值的方法
  • Boolean(123) 「直接将Boolean当作转换函数使用」
  • !!(123) 「双重非运算符」
  • new Boolean(123) 「不推荐,不要用创建对象的方式进行类型转换;对于任何对象来说,即使值为falseBoolean对象,使用此方法转换结果都是true
  • 注意:不要在应该使用基本类型布尔值的地方使用Boolean对象
  • 实例方法
  • Boolean.prototype.toString()
  • 以字符串形式返回该布尔对象的值
  • 不会继承Object.prototype.toString()
  • Boolean.prototype.valueOf()
  • 返回一个Boolean对象的原始值「基本类型值」
const x = new Boolean(null); 
    console.log( x.valueOf() ) // false
   // 首先会进行隐式转换,其次在进行比较
    Boolean(null) ==> false
  • 数字类型 :是一种基于 IEEE 754 标准的双精度 64 位二进制格式的值;
  • 整数
  • +0 / -0
console.log(+0 === -0) ==> true
   console.log(1 / +0) ==> Infinity
   console.log(1 / -0) ==> -Infinity
  • 负数
  • 小数
  • +/-Infinity
  • 检查数值是否大于或者小于+/-InfinityNumber.MAX_VALUE / Number.MIN_VALUE
  • 最大安全数和最小安全数:Number.MAX_SAFE_INTEGER / Number.MIN_SAFE_INTEGER
  • 检查是否在安全数之内:Number.isSafeInteger() - NaN(非数值,Not-a-Number
  • 用途:一般用于浏览器的隐式转换中
  • 数学运算
  • isNaN 检测
  • == 比较
  • 字符串类型 :;
  • "" / '' / String()
  • 字符串一旦被创建,就不能被修改
  • Undefined类型 :一个没有被赋值的变量会有个默认值 undefined
  • 标识符:用来标识变量/函数/属性的字符序列
  • 全局对象的一个属性 undefined「全局作用域的一个变量」
  • 函数没有return返回值,就会返回一个undefined
  • 用途
  • 判断变量是否有值
  • 判断变量是否与undefined严格相等,若相等则变量有值
  • 判断变量是否被声明
  • 一般会使用typeof来判断变量是否存在,其优点:
  • typeof 不会在变量没有被声明时抛出错误,所以不会阻塞代码执行
  • 注意:必须使用严格相等操作符,否则会出现值为null的情况
  • 通过判断变量是否在当前上下文中被声明;如果是全局上下文,可以通过全局对象来检查是否存在当前属性
  • in 操作符:指定的属性在指定的对象或其原型链中,则in 运算符返回true
  • void 运算符:对给定的表达式进行求值,然后返回 undefined
  • 一般只用于获取undefined的原始值,一般使用void(0)
  • 当函数返回值是一个不会被使用到的时候,应该使用 void 运算符,来确保返回 undefined
  • == === 的区别:
  • == :判断值相等则返回true,不会判断类型是否相等
  • === :判断类型和值都相等则返回true
  • Null类型 :特指对象的值未设置
  • 是一个字面量
  • 变量未指向任何对象 「表示一个空指针」
  • 返回类型是一个对象,但是没有关联任何的值
  • nullundefined 的区别:
  • “==” 相等「内部会进行隐式转换」==> true
  • “===” 全等 「内部不会进行隐式转换」==> false
  • Symbol类型:是唯一且不可修改的原始值
  • 创建symbol数据类型:let sym = Symbol();
  • 该类型的性质在于这个类型的值可以用来创建匿名的对象属性
  • 该属性是匿名的,并且是不可枚举的,所以:
  • 不是for..in循环中的成员
  • 不是Object.getOwnPropertyNames()中返回的成员
  • 可以通过 Object.getOwnPropertySymbols() 属性访问
  • 能对该类型实例使用其他操作符
  • 不能被当作构造函数使用,作为构造函数调用时会抛出一个错误:Symbol is not a constructor「new Symbol()
  • 应用场景:
  • 给对象设置“唯一值”的属性名
  • 字符串「属性的类型为字符串」
  • Symbol类型「属性的类型也可为Symbol类型」:用变量存储 symbol 的值,然后使用存储的值创建对象属性
  • Map新的数据结构:可以允许属性名是对象「Map属性名是字符串/对象」
  • Symbol.asyncIterator/iterator「for...of..」/hasInstance「instanceOf」/toPrimitive/toStringTag... 是某些JS知识底层实现的机制
  • 在派发行为标识统一进行管理的时候,可以基于symbol类型的值,保证行为标识的唯一性
  • BigInt类型:表示任意精度的整数;
  • BigInt([value]) / [value]n
  • 通过在整数末尾附加字母 n 或调用构造函数来创建的
  • 可以安全地存储和操作大整数,甚至可以超过数字类型的安全整数限制「四则运算都支持」
  • 不能与数字相互运算;需要把数字转换为BigInt类型,在进行运算
  • 最大安全数:Number.MAX_SAFE_INTEGER9007199254740991
  • 最小安全数:Number.MIN_SAFE_INTEGER -9007199254740991
  • 超过安全数后,进行运算或者访问,结果会不准确!!!解决方案:
  • 服务器返回给客户端的大数,按照“字符串”格式返回!
  • 客户端把其变为 BigInt ,然后按照BigInt进行运算
  • 最后把运算后的BigInt转换为字符串,在传递给服务器即可
对象类型(一组属性的集合)「引用数据类型」

对象(object 是指内存中的可以被标识符引用的一块区域

  • 标准普通对象
  • 标准特殊对象
  • 非标准特殊对象
  • 可调用/执行对象「函数」
  • 普通函数
  • 构造函数
  • 箭头函数
  • 生成器函数