前言
每一门语言都有数据类型,数据类型涵盖了语言可以定义哪些变量
一、数据类型概述
与其他编程语言一样,js数据类型也包括数值型、字符串、布尔型、数组等等,不一样的点在于 js中数值型包括整形、浮点型,空缺值NaN也是number型,可以定义某种类型的变量,然后用 作某任务,某事件。
1.js中的数据类型
JavaScript 数据类型 在 JavaScript 中有 6 种不同的数据类型: string 【字符串】 number 【数值型:包括浮点型、整型】 boolean 【布尔型】 object 【对象,new出来的】 function 【函数类型】 symbol 【标志:作为键可以用于创建集合】 2 种对象类型: Date 【操作时间用的对象】 Array 【数组对象】 2 个不包含任何值的数据类型: null 【空值】 undefined 【使用未定义的变量,那么该变量是undefined】
2.typeof检测数据类型
<!-- typeof可以检测变量的类型 typeof "John" // 返回 string typeof 3.14 // 返回 number typeof NaN // 返回 number typeof false // 返回 boolean typeof [1,2,3,4] // 返回 object typeof {name:'John', age:34} // 返回 object typeof new Date() // 返回 object typeof function () {} // 返回 function typeof myCar // 返回 undefined (如果 myCar 没有声明) typeof null // 返回 object NaN 的数据类型是 number 数组(Array)的数据类型是 object 日期(Date)的数据类型为 object null 的数据类型是 object 未定义变量的数据类型为 undefined 整数、小数、类型都是number -->
3.constructor检测数据类型
<!-- constructor属性检测变量类型 可以结合toString indexOf函数判断具体的数据类型 "John".constructor // 返回函数 String() { [native code] } (3.14).constructor // 返回函数 Number() { [native code] } false.constructor // 返回函数 Boolean() { [native code] } [1,2,3,4].constructor // 返回函数 Array() { [native code] } {name:'John', age:34}.constructor // 返回函数 Object() { [native code] } new Date().constructor // 返回函数 Date() { [native code] } function () {}.constructor // 返回函数 Function(){ [native code] } -->
二、数据类型的自动转换
<!-- 自动类型转换 数字可以通过String 函数直接转换成字符串 toExponential() 把对象的值转换为指数计数法。 toFixed() 把数字转换为字符串,结果的小数点后有指定位数的数字。 toPrecision() 把数字格式化为指定的长度。 字符串转换为数字 【如果是非数值字符串会出错,空字符串、空值会转换为0】 Number('str')//str Number(" ")//0 Number("")//0 Number("99 88")//返回NaN parseFloat() 解析一个字符串,并返回一个浮点数。 parseInt() 解析一个字符串,并返回一个整数。 自动类型转换 5 + null // 返回 5 null 转换为 0 "5" + null // 返回"5null" null 转换为 "null" "5" + 1 // 返回 "51" 1 转换为 "1" "5" - 1 // 返回 4 "5" 转换为 5 【这点尤为独特】 当你尝试输出一个对象或一个变量时 JavaScript 会自 动调用变量的 toString() 方法: 自动类型转换成bool时,如果变量是对象则bool值为true 若变量是空引用或者没有值,或者值为0则为false -->
三、变量的定义
在一中已经介绍了数据类型有哪几种,现在就使用那几种类型进行变量的定义 js中严格遵循字母的大小写、并且只能对数据类型相同的进行计算,不能对不 同类型的数据进行计算
1.字面量
字面量(literal)用于表达源代码中一个固定值的表示法(notation), 整数、浮点数以及字符串等等都是字面量。 js中的字面量有数字、字符串、数组、对象、函数
函数作为字面量使用doument获取
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <!-- js中的对象是由属相与方法组成的数据 --> </head> <body> <h2>这是我得信息</h2> <p id="demo1"></p> <p id="demo2"></p> <script> var demox = { name: "张三", age: "28", demo : function(){ return this.name + " " + this.age; } } // 使用函数名加()时会返回函数对应的返回值 document.getElementById("demo1").innerHTML=demox.demo() // 使用函数名不加()时会返回函数的定义【得益于函数闭包的支持】 document.getElementById("demo2").innerHTML=demox.demo </script> </body> </html>
2.定义变量
①使用var声明
直接声明赋值 var q; q=10; 声明新的变量时,可以使用new声明他的类型 var k=new String; var k1=new Number; 可以一次声明多个变量 var a=10, b=1, c=2; 对象的声明 var user={ name:"张三", age:"19", sex:"男", id:"888" }
②不使用var直接声明
w=10;
③两者区别
使用方法区别
变量的声明 var 变量名 对没有声明的变量赋值,该变量将自动转化为window的一个属性,可以使用delete删除掉 使用var声明的变量赋值后没法删除
变量的作用域
函数内部使用var声明的变量只能在函数内部使用(生命周期伴随函数开始与结束) 函数外使用var声明的变量是全局变量,在整个页面内都可以使用 函数内没有用var声明的变量也可以在全局访问到,是window变量,js中 声明的变量均会自动转化为windows变量
总结
js的数据类型较为简单,需要注意的是字符串的自动类型转换、函数可以作为字面量使用、使用var定义变量与不使用的区别。