JavaScript 变量
变量是用于储存信息的“容器”。
在 JavaScript 中创建变量通常称为"声明"变量。
创建变量name,值为“张三”的三种方法:
var name = "张三";
- var声明 基本声明方式
- 同一变量可以声明多次
- 变量提升
let name = "张三";
- let声明只在当前模块(作用域)生效
- 同一变量只能声明一次
- 不存在变量提升
const name = "张三";
- const 声明一个只读变量,声明之后不允许改变。意味着,一但声明必须初始化,否则会报错。
- 存在暂时性死区
- 复杂类型的const用法需要慎重
同时声明多个变量,用逗号","隔开(var、let、const三种声明方式都相同):
var name = "张三",
age = 20,
sex = "男";
JavaScript 数据类型
基本数据类型
- 数字类型
let num = 1;
- 字符串类型(双引号或者单引号的任意文本)
let str = "a"; let str2 = '1';
- 布尔类型(该类型只存在 true,false两个值)
let boolY = true; let boolN = false;
- Undefined 和 Null
var ud; // undefined 空值,表示声明未赋值 // null 表示未声明,没有
引用数据类型
-
数组
let arr = []; let arr2 = new Array;
-
对象(可以对基本类型做出准确的判断,但对于引用类型,用它就有点力不从心了)
let obj = {}; let obj2 = new Object;
判断数据类型的方法
-
typeof(只能检测出基本数据类型和函数)
var a, num = 1, str = "a", bool = true, fun = function(){}; typeof a // 返回 undefined typeof num // 返回 number typeof str // 返回 string typeof bool // 返回 boolean typeof fun // 返回 function typeof null // 返回object,因为特殊值null被认为是一个空的对象引用
-
instanceof(判断对象和构造函数在原型链上是否有关系,如果有关系,返回真,否则返回假)
var a, num = 1, str = "a", bool = true, arr = [], fun = function(){}; a instanceof Object // 返回 false num instanceof Number // 返回 false str instanceof String // 返回 false bool instanceof Boolean // 返回 false arr instanceof Array // 返回 true fun instanceof Function // 返回 true null instanceof Object // 返回 false var num2 = new Number(1), str2 = new String('a'), boolean = new Boolean(true); num instanceof Number // 返回 true str instanceof String // 返回 true bool instanceof Boolean // 返回 true
-
constructor(查看对象对应的构造函数)
function fun(){} //fun.prototype.constructor = fun; //每一个函数都会有,自动生成
var num = 1, str = "a", bool = true, arr = [], fun = function(){}; num.constructor == Number // 返回 true str.constructor == String // 返回 true bool.constructor == Boolean // 返回 true arr.constructor == Array // 返回 true fun.constructor == Function // 返回 true
null和undefined是无效的对象,不会有constructor存在。并且使用constructor是不保险的,因为constructor属性是可以被修改的,会导致检测出的结果不正确。
-
Object.prototype.toString (几乎可以判断出全部类型)
var a, num = 1, str = "a", bool = true, arr = [], fun = function(){}; Object.prototype.toString.call(a); // [object Undefined] Object.prototype.toString.call(num); // [object Number] Object.prototype.toString.call(str); // [object String] Object.prototype.toString.call(bool);// [object Boolean] Object.prototype.toString.call(arr); // [object Array] Object.prototype.toString.call(fun); // [object Function]