重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
一、js表达式
创新互联公司于2013年开始,是专业互联网技术服务公司,拥有项目网站建设、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元慈利做网站,已为上家服务,为慈利各地企业和个人服务,联系电话:18982081108
定义:表达式是指能计算出值得任何可用程序单元。 ——wiki
表达式是js一种短语,可是js解释器用来产生一个值。 ——js《权威指南》
1.原始表达式。
常量/直接量: 3.14/ "test" 等
关键字: null,this,true,false 等
变量: i,k,j 等
复合表达式:原始表达式和原始表达式之间用运算符连接可以组成一个复合表达式。
例如: 10 * 20 这就是一个复合表达式
2.(数组、对象的)初始化表达式。
例如:
[1,2] 等价于 new Array(1,2);
[1,,,2] 等价于 new Array(1,undefined,undefined,2);
{x:1,y:2} 等价于 var obj = new Object();
obj.x = 1;obj.y = 2;
3.函数表达式。
var fn = function(){};
或者:
(function(){ console.log("hello") })();
如果你不理解函数表达式后面还会有对应的介绍。
4.属性访问表达式。
var obj = {x:1}
我们可以通过 obj.x 或者 obj["x"]来访问它的属性,这一类表达式就称之为属性访问表达式。
5.调用表达式。
func(); 来调用一个函数,这样的表达式就称之为调用表达式。
6.对象创建表达式。
例如:
new Func(1,2);我们可以传参,如果没有参数我们也可以new Object;创建一个空的对象这样也是合法的。
二、js运算符(一般用于表达式之间进行一些运算)。
1.按照运算符的操作数的数量:
一元运算符: +num
二元运算符: a + b
三元运算符: c?a:b
2.按照功能区分:
赋值:x += 1 (或者-=,=等)
比较:a == b
算数:a - b
位: a | b
逻辑: exp1 && exp2 (或与非)
字符串:“a” + “b”
特殊: delete obj.x
下面我们对特殊运算符展开来讲:
条件运算符:var c = true?1:2 //c=1
逗号运算符:var val = (1,2,3) // val = 3 从左到右依次计算,取最后的
delete运算符:就是删除对象上的属性。
--例如:
var obj = {x:1} obj.x //1 delete obj.x obj.x //undefined
从IE9开始,我们可以给对象设置configurable标签,当configurable:true时属性才可以被delete掉
例:
var obj = {} Object.defineProperty(obj, 'x', { configurable:false, value:1 }); delete obj.x obj.x //1
3. in 运算符。
例:window.x = 1;那我们想知道window到底有没有x呢,我们就可以用 in
”x“ in window; // true
4. instanceof 和 typeof 我们在上一章详细的介绍过,如果忘记了可以去看一下。
5. new运算符
比如说我们创建一个函数构造器:function Foo(){}
Foo.prototype.x = 1;
我们可以用new运算符就可以创建一个对象obj
var obj = new Foo();
这样obj.x; //1 我们就可以从它的构造器上的prototype属性上拿到 1
我们可以通过 obj.hasOwnProperty("x"); //false 来判断这个属性到底是对象上的还是对象的原型上的
obj._proto_拿到它的原型,obj._proto_.hasOwnProperty("x"); //true 说明是原型上的
6.this 运算符。
this; //window(浏览器) var obj = { func:function(){ return this; } } obj.func(); // obj
this运算符也是比较特殊的这个我们后面会详细讲。
7.void运算符。
void 0 //undefined void (0) //undefined
void无论后面的操作数是多少,返回的都是undefined。
8.运算符的优先级,也是建议大家去看一下,更有助于大家读懂复杂的表达式。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持创新互联!