数据类型相关问题

\color{blue}{JavaScript中的数据类型都有哪些?}

  • 数据类型有两种:原始数据类型(又称基础数据类型、可变数据类型)和复杂数据类型(又称对象、不可变数据类型)。
  • 原始数据类型包括:undefined,null,number,string,boolen,Symbol(ES6 新加入的类型)
  • 复杂数据类型包括:包括对象
  • 其中对象包括:内部对象(Array、String等),宿主对象(window)和自定义对象。

\color{blue}{如何判断一个变量是否为数组?}

如果是ES5环境的话,可以用Array.isArray()方法。
如果不确定运行环境的话,可以用Object.prototype.toString.call()的方法来确认,如果结果是[object Array]则认为数组。

\color{blue}{undefined和null的相同与不同?}

相同点:

  • 这两个数据类型都只有一个值
  • 都没有方法
  • 都表示“无”
  • 转化为布尔类型时,都是false

不同点:

  • null是一个关键字,而undefined不是一个关键字。所以,var undefined = 1 ;//这是可以的,虽然这里undefined的值是不会改变的。var null = 1;//这样是报错的。
    null的实质是一个空的对象,而undefined是window的一个属性。进行数字类型转换时,null返回0,undefined返回NaN

\color{blue}{隐式类型转化的时候,JavaScript底层都做了哪些处理?}

对象转成原始数据类型时,先调用对象的valueOf方法,如果返回结果不是原始数据类型的值,再调用toString方法。
原始类型之间转换时,
原始类型转原始类型时,直接调用对应的构造函数进行转换

\color{blue}{有哪些值转化成布尔型后为false?}

包括下面这个六种:
0、-0、undefined、null、空字符串、NaN

\color{blue}{讲讲ES6中的Symbol?}

Symbol是ES6中新加的一个原始类型,他的每个值都是唯一的,即使是用两个完全一样的变量构造出来的Symbol也不相等。
原始类型传入Symbol方法时,会进行转换成字符串 再转成Symbol类型值;如果是对象的话,会先调用改对象的toString方法再转成Symbol类型的值。
Symbol是最大的用处是用来消除“魔法字符串”的。

\color{blue}{如何把字符串转换为数组?}

可以利用字符串的join方法,也可以用下面的一题中的方法。

\color{blue}{如何把类数组的变量转化为数组?}

是如果是ES6,可以用Array.from()方法。
如果不确定环境的话,可以用Array.prototype.slice.call()的方法,将类似数组转换为。

\color{blue}{如何封装一个 javascript 的类型判断函数?}

function getType(value) { 
  // 判断数据是 null 的情况 
  if (value === null) { 
      return value + ""; 
  }
  // 判断数据是引用类型的情况 
  if (typeof value === "object") { 
    let valueClass = Object.prototype.toString.call(value), 
    type = valueClass.split(" ")[1].split(""); 
    type.pop(); 
    return type.join("").toLowerCase();
  } else { 
    // 判断数据是基本数据类型的情况和函数的情况 
    return typeof value
  }
}

\color{blue}{let const var 区别?}

let 是 ES6新增的变量类型,用来代替 var 的一些缺陷,跟 var 相比主要有以下区别:

    1. let 使用块级作用域
    1. let 约束了变量提升而不是没有变量提升:let声明的变量存在变量提升, 但是由于死区我们无法在声明前访问这个变量。
    1. let 禁止重复声明变量
    1. let不会成为全局对象的属性(window.访问不到 var可以 )

const 声明的常量:
以上 let 的规则同样适用于 const,但是跟 let 的区别是 const 声明的变量不能重新赋值,所以 const 声明的变量必须经过初始化。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容