Javascript基础——Javascript语言核心(2):表达式和运算符;语句

表达式(expression)和运算符

基础知识点略过

4.9 关系表达式

4.9.3 in运算符

in运算符希望左操作数是一个字符串或可以转换为字符串,右操作数是一个对象。

如果右侧对象拥有一个名为左操作数值的属性名,则返回true。注意,数组是判断索引,不是数组元素

//对象
var obj = {x:1, y:2}
"x" in obj        //=> true: 对象中有"x"属性,注意如果写成x会报错(x is not defined)
"z" in obj        //=> false
"toString" in obj //=> true: 对象继承了toString()方法

//数组
var array=[4,5,6];
"1" in array //=>true 
1 in array   //=>true: 数字转换为字符串
4 in array   //=>false: 没有索引为4的元素
4.9.4 instanceof运算符

instanceof运算符希望左操作数是一个对象,右操作数标识对象的类(函数)。

如果左侧的对象是右侧类的实例,则表达式返回true。

var d= new Date();
d instanceof Date;  //=> true: d由Date()创建
d instanceof Object //=> true: 所有的对象都是Object的实例
d instanceof Number //=> false: d不是一个Number对象

var a=[1,2,3];
a instanceof Array  //=> true
a instanceof Object //=> true

注意:所有的对象都是Object的实例。通过instanceof判断一个对象是否是一个类的实例的时候,这个判断也会包含对“父类”(superclass)的检测。

4.10 逻辑表达式

4.10.1 逻辑与&&

&&的行为有时称作“短路”(short circuiting),即左表达式为true时才会计算右表达式。

常看到代码利用了这一特性来有条件执行代码,例如下面两行代码等价:

if(a == b) stop();  //只有在a==b时才调用stop()
(a == b) && stop(); //同上
4.10.2 逻辑或||

首先计算左侧表达式,如果为真值,则返回这个真值。否则,计算右侧表达式,病返回这个表达式的计算结果。和“&&”一样,有可能不会计算右侧的表达式。

这个运算符最常用的方式是用来从一组备选表达式中选出第一个真值表达式。

//如果max_width已经定义,直接使用;否则在preferences对象中查找max_width;如果还是没有定义,则使用一个写死的常量
var max= max_width || preferences.max_width || 500;

也常用在函数体内,给参数提供默认值:

function fn(a,b){
    b=b || {}; //如果没有传入b,则创建一个空对象

    //函数体内的逻辑部分
}   

语句(statement)

5.2 复合语句和空语句

空语句(empty statement)不会执行任何动作。

当创建一个具有空循环体的循环时,空语句有时很有用。

//初始化一个数组a
for(var i=0;i<a.length;a[i++]=0) /*empty*/;

在这个循环中,不需要任何循环体,而Javascript需要循环体中至少包含一条语句。因此,这里值使用一个单独的分号来表示一条空语句。

使用空语句时,最好加上注释,避免出现bug。

5.5 循环

语句语法含义
whilewhite(expression) statement基本的循环结构
do/whiledo statement while(expression);先执行再判断循环条件
forfor(init;test;incr) statement简写循环
for/infor(var in object) statement遍历一个对象的属性

5.6 跳转

语句语法含义备注
labellabel: statement给statement指定一个名字:label
breakbreak [label]立即退出最内层的循环或swith语句,或label指定的语句-
continuecontinue [label]转而执行下一次最内层循环,或label指定的循环-
returnreturn [expression]函数调用后的返回值不带expression返回undefined
throwthrow expression;抛出异常-
try/catch/finallytry{statements}
[catch(e){hadler statements}]
[finally{cleanup statements}]
捕获异常catch中可通过局部变量e来获得对Error对象的引用;不管try语句是否抛出异常,finally中的内容始终会执行

5.7 其他

语句语法含义备注
withwith(object) statement扩展作用域链不赞成使用
debuggerdebugger;断点器调试
use strict“use strict”对脚本和函数应用严格模式
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值