废话不多说,请接表达式篇(上)。
啰嗦之前
var oCreator = new Object();
oCreator.say = "";
if(oCreator.say == "没有对象"){
console.log("怎么面向对象编程?");
}
else{
console.log("难道真要抽象出一个对象,像this那样指向任意对象?o(╯□╰)o");
console.log("关于原型,犀牛书上看不太明白,恳求大神指点!");
}
属性访问表达式运算得到一个对象属性或一个数组元素的值。
两种语法
(1)expression.identifier
<1>一个表达式后跟随一个句点和标识符;
<2>表达式指定对象,标识符指定需要访问的属性的名称。
(2)expression[expression]
<1>方括号内是一个表达式(一般用于对象和数组);
<2>第二个表达式指定要访问的属性的名称或者代表要访问数组元素的索引。
区别
(1)expression.identifier这种方式只适用于要访问的属性名是合法的标识符(符合命名规范),并且需要知道被访问属性的名字;
(2)如果属性名称是一个保留字或包含空格和标点符号,或是一个数字,则必须用expression[expression]写法;当属性名是一个计算值而不是固定值的时候,也必须使用方括号写法。
一种调用(或者执行)函数或方法的语法表示。
构成
(1)以一个函数表达式(指代了要调用的函数)开始;
(2)函数表达式后跟随一对圆括号
(3)括号内是一个以逗号隔开的参数列表,参数可以有0个也可有多个
求值
(1)先计算函数表达式,再计算参数表达式;
(2)传参;
(4)执行函数体。若函数使用return语句给出一个返回值,那么这个返回值就是整个调用表达式的值。否则,调用表达式的值就是undefined。
使用new关键字,通过构造函数创建并初始化。
实例:var obj = new Object();
注:若不传参,小括号可省略。
算术表达式
(1)所有无法转换成数字的操作数都转换为NaN,对应表达式的值也是NaN;
(2)计算结果不区分整型和浮点型,如5/2==2.5;
(3)除数为0时,结果为Infinity或-Infinity,例外:0/0==NaN;
(4)取余(%)也适用于浮点数,如6.5%2.1==0.2;
(5)注意加号运算符的双重作用:加法和字符串连接。
关系表达式
返回一个布尔值true/false;
(1)相等(==)只比较值,恒等(===)比较值和类型,不等(!=)和不恒等(!==)同理;
(2)in运算符用于属性归属判断,instanceof运算符用于对象类别判断。
逻辑表达式
(1)逻辑与&&
若左操作数的计算结果(包括布尔转换)为假值,则整个表达式的值为左操作数的值,不计算右操作数的值;否则,整个表达式的值为右操作数的值。
(2)逻辑或||
若左操作数的计算结果(包括布尔转换)为假值,则整个表达式的值为右操作数的值;否则,整个表达式的值为左操作数的值,不计算右操作数的值。
(3)逻辑非!
首先将操作数转换成布尔值,再取反!
赋值表达式
用来给变量或属性赋值。
运算符的存在使得表达式的生命变得丰富多彩,二者几乎形影不离。在具体使用时,需要注意“运算符的优先级”。JS中的运算符分为一元、二元、三元之分,约有51种,内涵实在丰富,这里就不做赘述了!
申明:以上所有内容均是在《JavaScript权威指南》(淘宝前端译)一书的基础上整理所得。 以上,仅与诸君共勉!如有错漏,欢迎大神指正,为谢!
2024 - 快车库 - 我的知识库 重庆启连科技有限公司 渝ICP备16002641号-10
企客连连 表单助手 企服开发 榜单123