javascript是弱类型语言。即,一个变量可以赋不同数据类型的值。javascript允许变量类型的隐式转换,允许强制类型转换等,如字符串和数值可以自动转化;而强类型语言一般不允许这么做。

在JavaScript里 变量均为对象。当声明一个变量时,就创建了一个新的对象;

基本类型:字符串(String)、数字(number)、布尔(boolean)、对空(Null)、未定义(Undefined)、Symbol(注:Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。)。

对象类型:对象(Object)、数组(Array)、函数(Function),还有两个特殊的对象:正则(RegExp)和日期(Date)。

javascript数据类型怎么用(JavaScript数据类型)(1)

let x; // x 为 undefined let x = 5; // 现在 x 为数字 let x1 = 34.00; // 小数点 也是数字类型 let x = "John"; // 现在 x 为字符串 let x = ["Q", "C", 1, 3]; // 数组 可以直接 let x = {name:'leo', age: 17}; // 对象 let t = function () {} // 函数 function // 变量类型的隐式转换 let x1 = 5; // 定义时是 typeof x1 number x1 = 'json'; // 通过赋值string 变成了 typeof x1 string // 数组定义 let arr = []; or let arr = new Array(); cars[0]="Saab"; // 为数组第一项赋值 or let arr = ["Saab"] // 对象定义与数组类似 let arr = {}; or let arr = new Object(); cars['name']="Saab"; // 为对象添加key-value or let arr = {name: "Saab"}

变量的数据类型可以使用 typeof

typeof "leo" // 返回 string typeof 2.67 // 返回 number typeof true // 返回 boolean typeof ["Q", "C"] // 返回 object typeof {name:'leo', age: 17} // 返回 object typeof function(){} // 返回 function typeof null // 返回 object // 注:typeof 数组与对象,null都返回,object // 如何区分他三呢? let n = null; console.log(n === null); // true // 判断数组 1,instanceof var arr = [1,2,3,1]; console.log(arr instanceof Array); // true 2,constructor var arr = [1,2,3,1]; console.log(arr.constructor === Array); // true 3,Object.prototype.toString function isArrayFn (o) { return Object.prototype.toString.call(o) === '[object Array]'; } var arr = [1,2,3,1]; console.log(isArrayFn(arr));// true 4,es5 新增Array.isArray() var arr = [1,2,3,1]; console.log(Array.isArray(arr));// true // 补充几个判断 null/object/array 的工具类 // 通过 typeof var getDataType = function(o){ if(o===null){ return 'null'; } else if(typeof o == 'object'){ if( typeof o.length == 'number' ){ return 'Array'; }else{ return 'Object'; } }else{ return 'param is no object type'; } } // 通过instanceof var getDataType = function(o){ if(o===null){ return 'null'; } if(o instanceof Array){ return 'Array' }else if( o instanceof Object ){ return 'Object'; }else{ return 'param is no object type'; } };

补充let,var,const区别

三者都是定义变量,var/let 定义可变变量,区别在于,var 会变量提升,var允许重复声明,而let不允许重复声明,具体参看下面示例;const 定义不可变变量

//变量提升 console.log(a); // undefined var a = 13; var a = 14; // 相当于 var a; // 只声明没有赋值,默认为undefined console.log(a); a = 13; //不允许重复声明 let a = 12 console.log(a) let a = 13 // => 此行出错:SyntaxError: Identifier 'a' has already been declared console.log(a) var a = 12 let a = 13 // => SyntaxError: Identifier 'a' has already been declared console.log(a) let a = 13 var a = 12 // => SyntaxError: Identifier 'a' has already been declared console.log(a) // const const a = 1; a = 2; // 报错,不可修改const 的值

,