js中三元运算符用作流程控制

通常状况下js的三元运算符用作判断与返回值、形式如下

var result = (username == 'star') ? 'star' : 'moon';

如果用在流程控制中,试想如下操作:


/*判断语句*/ ? /*语句一*/ :/*语句二*/;

通常的写法是

(username == 'star') ? document.write("im star") :document.write ("im moon");

ok,再变态一点的

/*判断语句*/ ? /*语句块一*/ :/*语句块二*/;

如果我们写作:

(username == 'star') ? document.write("im star");alert(1) :document.write ("im moon");

这样是会报错的,首先,那个';'会破坏 ?:语句。
如果写作

(username == 'star') ? (document.write("im star");alert(1)):document.write ("im moon");

是不可以的。

最后我想到了eval

(username == 'star') ?eval('document.write("im star");alert(1);'):document.write ("im moon");

ok,这样javascript就可以用三元操作符作流程控制了,但是需要注意,在eval中不要出现break;return等中断运算符,这样对?后面的第一个式子相当于没有常规结束,不会产生返回值,会在操作台报错的。
Uncaught SyntaxError: Illegal break statement
Uncaught SyntaxError: Illegal return statement
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值