JavaScript数据类型/表达式/运算符
数据类型:原始类型( number,string,boolean,null,undefined ),
对象类型,(函数(function)和数组(array) 和时间(date)等都属于对象类型
隐式转换:37"-7结果为30,减号理解为减法运算
“37”+7结果为“377”,加号理解为字符串拼接
巧用 +/- 规则转换类型:
1. num - 0 -> 数字;
2. num + '' -> 字符串;
= 表示赋值;
== 表示比较,但是会做隐式类型转换。比如, "1 == true", 此时,1会从一个Number数 据类型转换到Boolean数据类型,进而再做比较;
=== 表示比较,不会去做数据类型的转换,因而相对于“==”也更严格一些。
包装对象:
var a='string';
alert(a.length)// 结果是6;
a.t=5;
alert(a.t)//结果为undefined
当基本数据类型执行对象类型才有的属性和方法时,js会临时创建一个对象,内容和基本类型一样,执行完毕后就会销毁点这个对象。
JavaScript类型检测:
typeof, instanceof, object.prototype.toString ,constructor, duck type
用处:
-
保证代码的健壮性,js是弱类型语言,类型检测可以避免出现不必要的类型转换问题。
-
有助于更高质量的完成代码书写。
-
有助于功能逻辑的把控。
类型检测小结
1.typeof适合基本类型及function检测,遇到null会失效 2.[[Class]]是通过{}.toString拿到,适合内置对象和基本类型,遇到null和undefined会失效 ie 6 7 8 会返回[object object] 3.instanceof 适合自定义对象,也可以用来检测原生对象,在不同iframe和window间检测时失效
JavaScript表达式
1. 原始表达式 //常量、直接量、关键字、变量 3.14、"test"、null、i、k、j
2. 初始化表达式 //[1,2]、{x:1, y:2}
3. 函数表达式 //var fe = function(){}、(function(){})()
4. 属性访问表达式 //var o = {x:1}、o.x、o['x']
5. 调用表达式 //func()
6. 对象创建表达式 //new Func(1,2)、new Object
运算符:
1.
var val = (1, 2, 3); // val =3; "," 运算符,值为最右边的
var obj = { x:1 };
obj.x; // 1
delete obj.x; // 删除 obj 的 x 属性
obj.x; // undefined
2.
var obj = {};
Ojbect.definProperty(obj,'x',{
configurable: false, // 要为 true 才可以 delete
value: 1
});
delete obj.x; // false
obj.x; // 1
3.
window.x = 1;
'x' in window; // true
4.
{} instanceof Object // true
typeof 100 === 'number' // true
5.
function Foo(){}
Foo.prototype.x = 1;
var obj = new Foo();
obj.x; // 1
obj.hasOwnProperty('x'); // false
obj._proto_.hasOwnProperty('x'); // true
6.
this; // 若是全局变量 --> window (浏览器)
var obj = {
func: function(){return this;} // this --> 当前对象
};
obj.func(); // obj
7.
void 0 // undefined
void(0) // undefined

浙公网安备 33010602011771号