你真的懂JavaScript基本范例吗

夯实Javascript基础。

基础范例有六种: null,undefined,boolean,number,string,symbol。

基础范例的值是保存在栈内存中的简朴数据段

基础范例特征

基础范例最主要的特征

  • 基础范例是稳定的

    • 因而:基础范例没有splice,sort之类的直接转变变量的要领
    • 强行转变基础范例会报错
      // str 不能挪用 Array的 sort 和 splice
    
      Array.prototype.sort.call('strxyz');
      // Uncaught TypeError: Cannot assign to read only property '2' of object '[object String]'
    
      Array.prototype.splice.call('strxyz');
      // Uncaught TypeError: Cannot assign to read only property 'length' of object '[object String]'
    
    
      // object 能够运用 Array的sort 和 splice
    
      Array.prototype.sort.call({x: 1, y: 2});
      // {x: 1, y: 2}
    
      Array.prototype.splice.call({x: 1, y: 2});
      // []
  • 基础范例没有__proto__没有属性

      str.x = 1;
      console.log(str.x); // undefined
  • 一切对基础范例属性的接见都是接见的基础包装范例 (String、Number、Boolean)

      当你挪用 `str.length` 时,现实历程是如许的:
      -> 建立String范例的一个实例
      -> 在实例上挪用指定的要领
      -> 烧毁这个实例
    
      var str = 'abc';
      var _str = new String(str);
      var len = _str.length;
      _str = null;
      console.log(len);

其他特征

  • typeof null === ‘object’

    • (汗青遗留问题,由于000开首示意对象,而null满是0)
  • 前提推断时 undefined null false NaN '' 0 -0 为 false,其他都为 true

    • (前提推断时会隐式转换为Boolean)
  • JS只要浮点范例(double),没有整型

    • 1 === 1.0
  • NaN 也属于 number 范例,而且 NaN 不等于本身。

    • var a = NaN; a !== a;
  • String 范例是类数组,具有iterator

    • typeof String('x')[Symbol.iterator] === 'function'

基础范例检测

检测基础范例用 typeof

  // typeof 只合适检测 基础范例

  typeof new Date() // 'object'
  typeof [] // 'object'
  typeof {} // 'object'
  typeof console.log // 'function'

基础范例转换

基础范例转换时,起首会挪用 valueOf,然后挪用 toString。而且这两个要领能够重写。

  var a = 1;

  var obj = {x: 1};
  obj.toString === '[object Object]';

  var arr = [2, 3];
  arr.toString() === '2,3';

  a + obj === '1[object Object]';
  a + arr === '12,3';

Symbol.toPrimitive该要领在转基础范例时挪用优先级最高。

  let a = {
    valueOf() {
      return 1;
    },
    toString() {
      return '2';
    },
    [Symbol.toPrimitive]() {
      return 3;
    }
  }

  1 + a // => 4

四则运算

  • 在四则运算中,除了’+’ 其他操纵都邑以数字举行盘算
  • 假如是 + 运算,假如不是一切字面量都是number,那末会转换为字符串(toString)举行拼接

End

延续更新中,Github信息更多哦,你的⭐是我最大的支撑。
检察概况

    原文作者:zhongmeizhi
    原文地址: https://segmentfault.com/a/1190000018750848
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞