资讯专栏INFORMATION COLUMN

你真的懂JavaScript基础类型吗

ernest.wang / 3157人阅读

摘要:基本类型有六种,,,,,。类型是类数组,具有基础类型检测检测基础类型用只适合检测基础类型基础类型转换基本类型转换时,首先会调用,然后调用。该方法在转基本类型时调用优先级最高。

夯实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信息更多哦,你的⭐是我最大的支持。查看详情,

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/116062.html

相关文章

  • 真的JavaScript基础类型

    摘要:基本类型有六种,,,,,。类型是类数组,具有基础类型检测检测基础类型用只适合检测基础类型基础类型转换基本类型转换时,首先会调用,然后调用。该方法在转基本类型时调用优先级最高。 夯实Javascript基础。 基本类型有六种: null,undefined,boolean,number,string,symbol。 基本类型的值是保存在栈内存中的简单数据段 基础类型特性 基础类型最重要的...

    baishancloud 评论0 收藏0
  • 真的JavaScript基础类型

    摘要:基本类型有六种,,,,,。类型是类数组,具有基础类型检测检测基础类型用只适合检测基础类型基础类型转换基本类型转换时,首先会调用,然后调用。该方法在转基本类型时调用优先级最高。 夯实Javascript基础。 基本类型有六种: null,undefined,boolean,number,string,symbol。 基本类型的值是保存在栈内存中的简单数据段 基础类型特性 基础类型最重要的...

    seasonley 评论0 收藏0
  • 经常被面试官问到的JavaScript数据类型知识真的

    摘要:中的强制转换规则面试官中强制类型转换是一个非常易出现的点,知道强制转换时候的规则吗注规则最好配合下面什么时候发生转换使用这些规则看效果更佳。调用方法用来把对象转换成原始类型的值数值字符串和布尔值。 前言 showImg(https://segmentfault.com/img/bVbu4Fb?w=940&h=400);之前面试了几个开发者,他们确实做过不少项目,能力也是不错的,但是发现...

    codergarden 评论0 收藏0
  • 2019前端工程师自检清单与思考

    摘要:前端工程师自检清单对于,掌握其语法和特性是最基本的,但是这些只是应用能力,最终仍旧考量仍然是计算机体系的理论知识,所以数据结构,算法,软件工程,设计模式等基础知识对前端工程师同样重要,这些知识的理解程度,可以决定你在前端工程师这条路上能走多 2019前端工程师自检清单 对于JavaScript,掌握其语法和特性是最基本的,但是这些只是应用能力,最终仍旧考量仍然是计算机体系的理论知识,所...

    Honwhy 评论0 收藏0

发表评论

0条评论

ernest.wang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<