JavaScript学习10 JS数据类型、强制类型转换和对象属性
JavaScript数据类型
JavaScript中有五种原始数据类型:Undefined、Null、Boolean、Number以及String。
Undefined数据类型的值只有一个:undefined。
在JavaScript中,如果函数没有声明返回值,那么会返回undefined。(后面有实例)。
如果typeof后面跟一个未定义的参数,也是返回undefined。
Null数据类型的值只有一个:null。
null与undefined的关系:undefined实际上是从null派生出来的。
所以:
alert(undefined == null);
弹框显示true。
Boolean数据类型的值有两个:true和false。
var s = false; //声明了一个布尔值false
字符串String类型,用单引号或者双引号都可以。
JavaScript中没有char数据类型。
typeof运算符
typeof是一元运算符,后跟变量的名称,用于获取变量的数据类型,其返回值有5个:undefined、boolean、number、string以及object。
var s = "hello"; // s是原始类型alert(typeof s) //输出:string
另一种方式:
var s = new String("hello"); //s是对象类型alert(typeof s) //输出:object
对象类型的基类是Object(很像Java),所以typeof判断出是对象类型之后不再具体说明其到底是何种对象类型。
var s = false;alert(typeof s); //输出booleanvar s = 3;alert(typeof s) //输出number
函数无返回值的情况
在JavaScript中,如果函数没有声明返回值,那么会返回undefined。
function add(){return;//或者干脆不写return }alert(add()); //弹框显示undefined
强制类型转换
强制类型转换:在JavaScript中有3种强制类型转换:
Boolean(value),Number(value),String(value)。
比较常规的:
var s = Number(3);alert(s);
转换成布尔值:
var s = Boolean("hello");alert(s); //显示true
var s = String("hello"); //注意此处没有关键字new,表示强制类型转换alert(typeof s);//输出string//如果加上new则会输出object
注意:强制类型转换前面是没有new这个关键字的。
对象的属性
在JavaScript中,所有对象都是从Object对象继承过来的。
Object中的属性是不可枚举的(propertyIsEnumerable返回false),因此无法
通过for…in语句得到其中的属性。
var object = new Object();for(var v in object){ alert(v);}//没有弹框,因为没有可枚举的属性alert(object.propertyIsEnumerable("prototype"));//返回false
动态管理属性
在JavaScript中,可以动态添加对象的属性,也可以动态删除对象的属性。
var object = new Object();alert(object.username); //undefined//添加属性object["username"] = "shengsiyuan";//object.username= "shengsiyuan"; //两种方式都可以动态添加属性usernamealert(object.username); //显示定义的name属性//删除属性delete object.username; // username属性已经从object对象中删除alert(object.username);//undefined
定义对象的另一种方式:
以属性来定义对象:
// 在JavaScript中定义对象的最常见的方式var object = {username: "zhangsan", password: 123};alert(object.username);alert(object.password);
参考资料
圣思园张龙老师Java Web视频教程。
W3School JavaScript教程:/js/index.asp
英文版:/js/default.asp