类型 | 含义 | 值/引用类型 | 字面量声明 | 说明 |
undefined | 未定义 | 值 | v = undefined | 未声明的或者声明过但未赋值的变量,其值会是undefined。也可为其赋值undefined |
number | 数值 | 值 | v = 1234 | 除赋值操作外,只有数值与数值的运算结果是数值; 函数/方法的返回值或对象的属性可以是数值。 |
string | 字符串 | 值 | v = 'abc' v= "cba" v= `str`(es6模板字符串) | 可以直接读取指定位置的单个字符,但不能修改 |
boolean | 布尔值 | 值 | v = true v = false | true/false |
symbol | 符号 | 值 | 无 | (自es6开始支持) |
function | 函数 | 引用 | v = function (...) { ... } v= (...) => { ... } function fnName (...) { ... } | js定义的方法 |
object | 对象 | 引用 | v = null v = /.../... (正则) v = [ ... ] v = { ... } | 基于原型继承与类继承的面向对象模型 |
补充:JavaScript有6种声明标识符的方法
变量(var) ,常量(const),块作用域变量(let)、函数(function)、类(class)、模块(import)
1、任何一个变量或者值的类型都可以用typeof运算得到。typeof是一个运算符而不是函数。typeof运算的结果是以字符串形式返回上述表中七种数据类型之一。
2、判断对象是数组还是对象。
https://blog.csdn.net/a736889661/article/details/82696848
方法一:constructor。通过 constrcutor 对象访问它的构造函数。
eg: var arr = [] arr.constrcutor
var obj = {} obj.constrcutor
方法二: instanceof。运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性。
eg: https://blog.csdn.net/haoaiqian/article/details/71956833
var array=new Array();
var object=new Object();
var regexp=new RegExp();
function func(){};
var func1=new func();
alert(array instanceof Array); //true
alert(object instanceof Object); //true
alert(regexp instanceof RegExp); //true
alert(func1 instanceof func); //true
方法三: toString()。
Object.prototype.toString = function(){
在函数里this正常指向的就是调用这个函数的对象, js中call()方法是改变this的指向, a.call(b), b替换了a
}
Object.prototype.toString.call([ ]), [ ]替换了Object.prototype;