JS中的数据类型
一,变量
1.变量的声明:
格式:var a = 30;
含义:声明一个名字为a的变量空间,并让这个空间指向30。
注意:在取这个变量中的内容时只会取到最后存入的内容。若在取值时变量中未存放任何内容,取出的值则为undefined
2.变量的提升:
如果有var系统就会直接在当前作用域的第一行代码按先后顺序隐式的声明一个变量,如果没有var系统就会在读到该代码时按先后顺序在第一行进行隐式的声明。
示例代码如下:
代码书写顺序:
console.log(a);
//console.log(b);在这条代码未被注释之前,程序会报错
var a = 30 ;
console.log(a);
b = 40;
代码实际运行顺序:
var a;
console.log(a);
//console.log(b);在这条代码未被注释之前,程序会报错
a = 30 ;
console.log(a);
var b;
b = 40;
代码运行后会在控制台中输出:
undefined
30
二,数据类型
在JS中,数据类型虽然分为五种基本数据类型(Number,String,Boolean,Undefined,Null),和一种复杂数据类型(Object)。可以用typeof() 方法来检测数据类型。
虽然typeof() 方法的返回值也有6种,但他们并不是一一对应的。typeof() 方法的返回值分别为Number,String,Boolean,Undefined,Object,Function;基本数据类型中的null用typeof() 方法会返回Object(原因是null在JS种被当成了一个空对象);
1.数字number
Number类型包含整数(int)和浮点数(float)(浮点数数值必须包含一个小数点,且小数点后面至少有一位数字)两种值。
NaN:非数字类型。特点:① 涉及到的 任何关于NaN的操作,都会返回NaN ② NaN不等于自身(即NaN≠NaN)。
isNaN() 函数用于检查其参数是否是非数字值。
isNaN(123) //false isNaN(“hello”) //true
常用的数字运算方法:
基本运算: + - * / % -(负号)
注意:+号运算时若两边有任意一边是字符串类型,则会在另一边调用toString方法,强制转化为字符串并进行拼接,而不是正常运算;
如:1+“1”的结果是11而不是2
常用方法
Math.random(系统随机帮我们生成数字:0-1,并不是真正理想中的随机)
Math.round (取整数部分:4舍5入)
Math.ceil(取整数部分:上)
Math.floor(取整数部分:下)
随机整数: Math.round(Math.random()*(MaxNum-MinNum)+MinNum)
console.log(isNaN("200px"))//结果是true 数值类型的字符串,判定为数字
2.字符串string
String类型表示由0或多个16位Unicode字符组成的字符序列,即字符串。ECMAScript中的字符串是不可变的,也就是说,字符串一旦创建,它们的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串(此过程是在后台发生的),然后再用另一个包含新值的字符串填充该变量。
一些常用操作:
求字符串的长度:str.length
;
指定位置的字符:str[2]
表示第三个字符;
注意:
1.字符串的索引从0开始,第一个字符的位置是0,第二个是1,以此类推;
2.长度为1的字符串代表一个字符,JavaScript里面并没有“字符型”;
3.字符串直接量是指用单引号或双引号括起来的字符序列;
4.单引号括起来的字符串可以包含双引号;双引号括起来的字符串可以包含单引号;
反斜线()后面加上一个字符,就不再表示字符的字面含义了,此时称为转义字符;
\’ 表示对单引号进行转义,这样就可以在单引号括起来的字符串中有单引号了;
常见的转义字符: \t:水平制表符;
\n:换行符;
\r:回车符;
\”:双引号,而不是字符串分界符;
\’:单引号,而不是字符串分界符;
\:反斜杠;
3.布尔值boolean
boolean值有两个字面值:true和false。这两个值和数字值不是一回事,ture不一定等于1,而false也不一定等于0
JavaScript中存在true值和false值的概念 — 除了boolean值true、false外,所有类型的JavaScript值均可用于逻辑判断,其规则如下:
1.所有的false值,当进行逻辑判断时均为false。false值包括:false、undefined、null、正负0、NaN、””。
2.其余所有的值均为Truthy,当进行逻辑判断时均为true。值得注意的是,Infinity、空数组、”0″(字符串0)都是Truthy值
4.undefined和null
Undefined类型只有一个值,即undefined。在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。typeof undefined:返回的是字符串undefined;
Null类型只有一个值,即null。从逻辑角度来看,null值表示一个空对象指针,而这也正是使用typeof操作符检测null值时会返回“object”的原因。
如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null而不是其他值。这样一来,只要直接检查null值就可以知道相应的变量是否已经保存了一个对象的引用。
实际上,undefined值是派生自null值,因此ECMA-262规定对它们的相等性检测要返回true。
undefined和null的区别
null表示”没有对象”,即该处不应该有值。典型用法是:
作为函数的参数,表示该函数的参数不是对象。
undefined表示”缺少值”,就是此处应该有一个值,但是还没有定义。典型用法是:
(1)变量被声明了,但没有赋值时,就等于undefined。
(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
(3)对象没有赋值的属性,该属性的值为undefined。
(4)函数没有返回值时,默认返回undefined。
5.对象object
在JS中,可以说一切皆对象,即除了字符串、数字、null、undefined、true、false的其他值都是对象;
在ECMA-262中把对象定义为:“无序属性的集合,其属性可以包含基本值、对象、或者函数。”
创建一个对象的方法:
var a = {}; //也可以用var a = new Object;
a.name = "karen";
a.age = 180;
//或者在创建对象时直接添加属性
var b = {
name :"Marry",
age :20
}
对象中还有两种十分重要和常用的特殊对象,分别是数组和函数
数组
数组的创建方法和对象的创建方法类似//可以通过函数创建 var arr = new Array(1,2,3,4);//若括号中的参数只有一个则会创建一个长度为该参数的空数组 //也可以直接创建 var arr1 = [1,2,3,4]; // 使用数组中的元素的方法字符串相同,都是通过取下标的方式来查找,使用和修改;数组的下标从0开始,一直可以取到数组的长度减一;如arr1中的第一个元素下标是0,最后一个元素的下标是3.
函数
在ES5种一般情况下用两种方法声明函数
①直接声明
②通过var声明
代码如下:function fn(){ //直接声明 console.log("函数fn执行了"); } var fn1 = function(){ //通过var声明 console.log("函数fn1执行了"); }
这两种方法的区别是:函数声明在代码运行时会整体提前到代码的最前面,也就是说你就算函数声明写在所有代码的最后面,如果在前面要使用这个函数,程序也会正常运行,函数会被正常使用。
但如果使用var 关键字声明的话,就不会整体提前,只会将函数名提前,不会将函数内容提前。也就是说在运行这个声明之前如果调用了这个函数就会报错。只有在运行到这行代码,让这个变量名指向这个函数后才能正常调用。
本人刚学习JS不久,如有错误,欢迎指正。