手记

js 学习笔记 1-02数据类型

数据类型

一.简单数据类型

1.undefined

console.log(age)//Uncaught ReferenceError: age is not defined
//未声明的变量会报错
console.log(typeof(age))//undefined
//对未声明的对象执行 typeof 操作符返回 undefined
var n1;
console.log(n1);//undefined  
//使用 var 声明变量但未对其加以初始化时,变量在内存中已经存在 
console.log(typeof(n1))//undefined
//对未初始化的变量执行 typeof 操作符返回 undefined

2.null

var n2=null;
console.log(n2);//Uncaught SyntaxError: Unexpected token :
//在内存中是找不到n2这个变量,因为null 置空销毁变量
console.log(typeof(n2))//object
//null值表示一个空对象指针
if(car!=null){
//对 car 对象执行某些操作
}
//只要意在保存对象的变量还没有真正保存对象,就应该明确地让该变量保存 null值

3.Boolean 布尔类型

var message='hello world';
console.log(Boolean(message))//true
//Boolean类型的字面值只有两个 true/false;
//要将一个值转换为其对应的 Boolean 值,可以调用转型函数 Boolean();
// Boolean()的返回值取决于转换值的数据类型及其实际值:
//  数据类型   \   转换为 true 的值   \   转换为 false 的值
// Boolean   \   true   \   false ;
//String   \   任何非空字符串   \   ''(空字符串) ;
//Number   \   任何非零数字值(包括无穷大)   \   0和 NaN ;
//Object   \   任何对象   \    null
//Undefined   \   n/a(N/A , not applicable  不适用)   \   undefined

4.Number 数值类型

包括 整数和浮点数;

数值字面量格式:十进制、八进制(0开头,0-7)、十六进制(0x开头,0-9及A-F);
var n1=12;
var n2=23;
console.log(n1+n2)//35
console.log(typeof(n1+n2))//number
//两个数值类型的变量相加,得到的是一个数值类型
var n1=12;
var n2='23';
console.log(n1+n2)//1223
console.log(typeof(n1+n2))//string
//一个数值类型和一个字符串相加,得到的是一个字符串
var n1=12;
var n1=23;
console.log(n1-n2)//-11
console.log(typeof(n1-n2))//number
//两个数值类型的变量相减去,得到的是一个数字类型
var n1=12;
var n1='23';
console.log(n1-n2)//-11
console.log(typeof(n1-n2))//number
//一个数值类型减去一个数字字符串,得到的是一个数值类型
var n1=12;
var n1='23ab';
console.log(n1-n2)//NaN
console.log(typeof(n1-n2))//number
//一个数值类型减去一个非数字的字符串,得到的是 NaN, 数值类型
//NaN  not a number  是数值类型 但不是数值
console.log(NaN/10)//NaN   NaN除以非数值返回 NaN;
console.log(NaN==NaN)//false  NaN与任何值都不相等包括其本身
console.log(isNaN(NaN))//true
console.log(isNaN(10))//false (10是一个数值)
console.log(isNaN('10'))//false (可以被转换成数值10)
console.log(isNaN('blue'))//true (不能被转换成数值)
console.log(isNaN(true))//false (可以被转换成数值1)
把非数值转换成数值:Number()、parseInt()、parseFloat()
var n1=6;
var n2=3;
console.log(n1/n2)//2
console.log(typeof(n1/n2))//number
//两个数值类型的变量相除,得到的是一个数值类型
var n1=6;
var n2='3';
console.log(n1/n2)//2
console.log(typeof(n1/n2))//number
//一个数值类型和一个数字的字符串相除,得到的是一个数值类型
var n1=6;
var n2='3ac';
console.log(n1/n2)//NaN
console.log(typeof(n1/n2))//number
//一个数值类型和一个非数字的字符串相除,得到的是 NaN,是一个数值类型
var n1=6;
var n2=0;
console.log(n1/n2)//Infinity
console.log(typeof(n1/n2))//number
//正数和0相除,得到的是 Infinity,是一个数值类型
//负数和0相除,得到的是 -Infinity,是一个数值类型
var n1=0;
var n2=0;
console.log(n1/n2)/NaN
console.log(typeof(n1/n2))//number
//0和0相除,得到的是NaN 是一个数值类型
练习
如果今天是星期六,1000天以后是周几
console.log((6+1000)%7);//5

5.String 字符串类型

任何字符串的长度都可以通过访问其 length属性取得,但是如果字符串含有双字节字符,length 属性就不会精确返回字符串中的字符数目了;

要把一个值转换成字符串有两种办法:
1.toString()方法:适用数值、布尔值、对象和字符串值;
    因为数值、布尔值、对象和字符串值都有一个 toString()方法,但 null 和 undefined 没有
2.转型函数String():能够将任何类型的值转换成字符串

二.复杂数据类型------Object 类型

对象其实就是一组数据和功能的集合,new 创建 var o=new Object();

Object类型所具有的任何属性和方法也同样存在于更具体的对象中;

Object 的每个实例都具有下列属性和方法:

constructor:保存着用于创建当前对象的函数,构造函数;

hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。其中,作为参数的属性名必须以字符串形式指定(eg:o.hasOwnProperty("name"));

isPrototypeof(object):用于检查传入的对象是否是当前对象的原型;

propertyIsEnumerable(propertyName) :用于检查给定的属性是否能够使用 for-in 语句来枚举。

toLocalString():返回对象的字符串表示,该字符串与执行环境的地区对应;

toString():返回对象的字符串表示;

valueof():返回对象的字符串、数值或布尔值表示。通常与 toString()的方法相同。

三.判断数据类型

typeof() 返回的值:

undefined ------如果这个值未定义;

boolean------如果这个值是布尔值;

string------如果这个值是字符串;

number-----如果这个值是数值;

object------如果这个值是对象或者 null;

function------如果这个值是函数;
0人推荐
随时随地看视频
慕课网APP