JS中有6种数据类型:Undefined、Boolean、Number、String,Function和Object。JS中不支持任何创建自定义类型的机制,而所有值最终都将是这6种数据类型。其数据类型的动态性特点足以表示所有数据。JS提供typeof操作符来检测变量的数据类型。
alert(typeof undefined); //undefined;
alert(typeof null); //object;
alert (typeof NaN); //number;
alert(undefined==null); //true;
alert(NaN==NaN); //false;
alert(isNaN(NaN));//true;
一.Undefined
undefined
是一个表示"无"的原始值,转为数值时为NaN
;
undefined
表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是:
(1)变量被声明了,但没有赋值时,就等于undefined。
(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
(3)对象没有赋值的属性,该属性的值为undefined。
(4)函数没有返回值时,默认返回undefined。
var str;
alert(str);//undefined--变量被声明了,但没有赋值时
function move(obj){
var a=obj;
alert(a);
}
move(); //undefined--调用函数时,应该提供的参数没有提供
var json={"a":"1"}
alert(json.b); //undefined--对象没有赋值的属性
二.Boolean
boolean 数据类型 boolean 变量存储为 8 位(1 个字节)的数值形式,但只能是 True 或是 False。
alert(1&&2)//前面为真执行后面--2
alert(0||2)//前面为假执行后面--2
什么是真什么是假:
真[true]:非0的数字;非空的字符串;非空对象;true;
假[fasle]: 0;空字符串;空对象; false; undefined;NaN;
javascript中创建boolean对象的方法
- 如果是数字值,只是简单的传入和返回。
- 如果是null值,返回0。
- 如果是undefined,返回NaN。
- a.如果字符串中只包含数字(包括前面带正号或负号的情况),则将其转换为十进制数值,即“1”会变成1,“123”会变成123,而“011”会变成11(注意:前导的零被忽略了)
var num3=parseInt("10",10); //10 (按十进制解析)
var num4=parseInt("10",16); //16 (按十六进制解析)
alert(num.toString(10)); //"10"
alert(num.toString(16)); //"a"
var value3=null;
alert(String(value1)); //"10"
alert(String(value4)); //"undefined"
这里先后转换了4个值:数值、布尔值、null和undefined。数值和布尔值的转换结果与调用toString()方法得到的结果相同。因为null和undefined没有toString()方法,所以String()函数就返回了这两个值的字面量。
一、属性类型
二、创建对象
除了这些内置构造函数,用自定义构造函数来初始化新对象也是非常常见的。
2.对象字面量
3.原型
在此,我们将sayName()方法和所有属性直接添加到了Person的prototype属性中,构造函数变成了空函数。即使如此,也仍然可以通过调用构造函数来创建新对象,而且新对象还会具有相同的属性和方法。但与构造函数不同的是,
当使用方括号时,我们说方括号内的表达式必须返回字符串。其实更严谨的说,表达式必须返回字符串或返回一个可以转换为字符串的值(这个特点可以用于处理很多情况)。由此我们可以联想到数组,这和数组获取元素的方法极为相似,其实数组也是对象,只是其属性名为数组下标而已。
3.删除属性
在非严格模式中删除全局对象的可配置属性时,可以省略对全局对象的引用,直接在delete操作符后跟随要删除的属性名即可:
然后再严格模式中,delete后跟随一个非法的操作数(比如x),则会报一个语法错误,因此必须显式指定对象及其属性:
4.枚举属性
a.除了+号之外(- * / )的都是隐式类型转化;
b.==
var a = '12';
var b = 12;
alert(a == b);//true;
+的作用:
a>.字符串拼接:
b>.还可以做计算;
显式类型转化[强制类型转化]:
a.parseInt(n,index);//取整数;碰到不是数字的就不在往后看了;index指进制数,默认十进制;
var a = '12asd353453';
var c = parseInt(a,10);
alert(c);//12;
var num = 123;
alert(parseInt(num/60) + '分' + num%60 + '秒');
b.parseFloat(n,index);//取小数,碰到不是数字的就不在继续转化;
c.Number(); 字符串里面包含非数字的就转化不了(NaN);
var str = '12asd43543';
var num = Number(str);
alert(num);//NaN
=: 赋值:右边的赋值给左边的;
==: 比较: 会做隐式类型转换,如果数据类型不相等,会先转换数据类型之后在进行比较;
===:严格的比较,如果数据类型不相等,那么就不相等;