文章目录
前言
每一门语言都有数据类型,数据类型涵盖了语言可以定义哪些变量
一、数据类型概述
与其他编程语言一样,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定义变量与不使用的区别。