分享人:周倩宇
1. ||(逻辑或)
从字面上来说,只有前后都是false的时候才返回false,否则返回true。
alert(true||false); // true
alert(false||true); // true
alert(true||true); // true
alert(false||false); // false
但是,从深层意义上来说的话,却有另一番天地,试下面代码
alert(0||1); 前面0意味着false,而后面1意味着true,那么上面的结果应该是true,而事实返回的结果是1。
alert(2||1); 前面2是true,后面1也是true,那返回结果又是什么呢?测试结果是2
alert('a'||1); 同样,前面'a'是true,后面1也是true;测试结果是'a'
alert(''||1); 我们知道前面''是false,后面1是true,而返回结果是1。
alert('a'||0); 前面'a'是true,而后面0是false,返回结果是'a'
alert('a'||'b'); 前面'a'是true,后面'b'是false,返回结果是'a'
alert(''||0); 前面''是false,后面0同样是false,返回结果是0
alert(0||''); 前面0是false,后面''是false,返回结果是''
这就意味
1、只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。
2、只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。
2. &&(逻辑与)
从字面上来说,只有前后都是true的时候才返回true,否则返回false。
alert(true&&false); // false
alert(true&&true); // true
alert(false&&false); // false
alert(false&&true); // false
然后,根据上面经验,我们看看“&&”号前后,不单单是布尔类型的情况。
alert(''&&1); 结果是返回'',“&&”前面''是false,后面是1是true。
alert(''&&0); 结果是返回'',“&&”前面''是false,后面是0也是false。
alert('a'&&1); 结果是返回1,“&&”前面''a是true,后面是1也是true。
alert('a'&&0); 结果是返回0,“&&”前面''a是true,后面是0是false。
alert('a'&&''); 结是返回'',“&&”前面''a是true,后面是''是false。
alert(0&&'a'); 结果是返回0,“&&”前面''0是false,后面是'a'是true。
alert(0&&''); 结果是返回0,“&&”前面''0是false,后面是''也是false。
这意味着
1、只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;
2、只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;
3. 总结:
表达式a && 表达式b: 计算表达式a(也可以是函数)的运算结果,
如果为 True, 执行表达式b(或函数),并返回b的结果;
如果为 False,返回a的结果;
表达式a || 表达式b : 计算表达式a(也可以是函数)的运算结果,
如果为 Fasle, 执行表达式b(或函数),并返回b的结果;
如果为 True,返回a的结果;
由上两个测试可知,逻辑运算符,“||”和“&&”都是遵行短路原则,只要确定符号前面的真假,既可确定返回值。如果为第一个为:true,则取第一个的值,如果第一个为false,则取第二个的值。
在js逻辑运算中,0、““、null、false、undefined、NaN都会判为false,其他都为true。
例如:
var a = obj || " " ; //如果 obj 为空,a就赋值为 “ ” ;
var a = check() && do(); //如果check()返回为真,就执行do(),并将结果赋值给 a;
需要说明的是“&&”的优先级是高于“||”的,
测试:
alert(1||'a'&&2);
返回结果是1。
根据反证原理,我们假设“||”的优先级不低于“&&”(这里只所以用“不低于”,是为了同时证明等级相同的情况)。
根据上面我们得出的结论(1),(1||'a')将返回前面的值1,(1&&2)根据结论(4)应该返回后面的值2。这显然不对,由此可知“&&”的优先级是高于“||”的。
这里顺便提下:看到很多代码if(!!attr),为什么不直接写if(attr);其实这是一种更严谨的写法:请测试 typeof 5和typeof !!5的区别。
!!的作用是把一个其他类型的变量转成的bool类型。
-
在开发中的应用,下面三段代码等价:
- a=a||"defaultValue";
- if(!a) { a="defaultValue"; }
- if(a==null||a==""||a==undefined) { a="defaultValue"; }
你愿意用哪一个呢?
callback&&callback()
在回调中,经常这么写,更严谨,先判断 callback 是不是存在,如果存在就执行,这样写的目的是为了防止报错,如果直接写 callback(); 当callback不存在时,代码就会报错。
东野圭吾的部分语录:
01-09《解忧杂货店》
10-21《变身》
21-34《时生》
35-40《盛夏的方程式》
人与人之间情断义绝,并不需要什么具体的理由。就算表面上有,也很可能只是心已经离开的结果,事后才编造出的借口而已。因为倘若心没有离开,当将会导致关系破裂的事态发生时,理应有人努力去挽救。如果没有,说明其实关系早已破裂。
其实很久以前我就知道自己应该怎样选择,只是一直无法下决心舍弃梦想。到现在,我依然不知道怎样才能做到这一点。打个比方,这就如同单相思的感觉,明知恋情不会有结果,却还是忘不了对方。
虽然至今为止的道路绝非一片坦途,但想到正因为活着才有机会感受到痛楚,我就成功克服了种种困难。
满脑子天真想法的人,在社会上吃点苦头也是好事。
就算是恨,也是一种很抽象的感情。
我的回答之所以发挥了作用,原因不是别的,是因为他们自己很努力。如果自己不想积极认真地生活,不管得到什么样的回答都没用。
他觉得一个人奋斗更轻松自在。跟没有干劲的人在一起厮混,只会徒增压力。
“不管是骚扰还是恶作剧,写这些信给浪矢杂货店的人,和普通咨询者在本质上是一样的。他们都是内心破了个洞,重要的东西正从那个破洞逐渐流失。证据就是,这样的人也一定会来拿回信,他会查看牛奶箱。因为他很想知道,浪矢爷爷会怎样回复自己的信。你想想看,就算是瞎编的烦恼,要一口气想出三十个也不简单。既然费了那么多心思,怎么可能不想知道答案?所以我不但要写回信,而且要好好思考后再写。人的心声是绝对不能无视的。”
这么多年咨询信看下来,让我逐渐明白一件事。很多时候,咨询的人心里已经有了答案,来咨询只是想确认自己的决定是对的。所以有些人读过回信后,会再次写信过来,大概就是因为回答的内容和他的想法不一样。——《解忧杂货店》
即使我变得不再是我,即使我已变身为嗜血的凶徒,即使整个世界已变成废墟,我仍然会用全部生命来爱你,至死不渝…… —— 《变身》
所谓活着并不是单纯的呼吸,心脏跳动,也不是脑电波,而是在这个世界上留下痕迹。要能看见自己一路走来的脚印,并确信那些都是自己留下的印记,这才叫活着。
你不会懂的。胡说什么脑不是特殊存在的你,怎么会懂?脑毕竟还是特殊的。你能想象得到么?今天的自己和昨天的自己不同,而明天睁开眼的时候,站在那儿的又不是今天的自己了。我只能感觉,那些遥远的往事都成了别人的回忆,那些花了好长时间培养的东西正在一点一滴地消失。你知道那意味着什么么?我告诉你吧——死亡!所谓活着并不是单纯的呼吸、心脏跳动,也不是有脑电波,而是在这个世界上留下痕迹。要能看见自己一路走过来的脚印,并确信那些都是自己留下的印记,这才叫活着。
总之,低能无聊的人太多。说他们勤勉,不过是因为不会合理分配时间;说他们积极,不过是逃避其他困难工作而已。即便说工作只是生存手段,也没见他们有什么拿得出手的爱好或特长。我真是每天都在失望。低能无聊的人要是边不满边骂着自己的低能无聊却不愿做出任何改变,那就真是自寻烦恼、自掘坟墓了。—— 《变身》
世上莫名其妙走霉运的人多的是,都在一边为命运生气,一边化愤怒为力量地活着。
别人对我稍稍亲热一点,我就头脑发昏,产生对方对自己有意的错觉。每当意识到那不过是好感,或者是社交辞令,我就会厌恶自己,觉得受到伤害。 —— 《变身》
软弱的人总是怕被说穿事实,而且讨厌说真话的人。 —— 《变身》
即使我们所知道的生命反应全都消失,人也许还在悄悄地,以我们完全想象不到的方式活着。—— 《变身》
别为难自己,活得像你自己就行了。”母亲生前这么说。她了解我,我也像母亲说的那样活着,平凡,默默无闻,这样比较适合我。—— 《变身》
我爱你,她重复着。不能相信这种虚无的台词,假面之下不知道会汹涌着怎样的欲望。
双重人格者拥有两种人格,大多数情况下不记得另一种状态。 —— 《变身》
你说以前留下的痕迹已经不归现在的你所有了,那又有什么不好呢?重生的你一定会有属于你自己的新足迹。 —— 《变身》
梦总是突然醒的,就像泡沫一般,越吹越大,最后啪地破灭,什么也没有,除了空虚。没有脚踏实地的建立起来的东西,就无法形成精神和物质上的支撑。 —— 《时生》
确信喜欢的人能好好活着 即便面对死亡 也有如看到了未来 未来不仅仅是明天 未来能在人的心中 只要心中有未来 人就能幸福 —— 《时生》
他知道过去是改变不了的,但也无法袖手旁观。” —— 《时生》
悲观也没用。谁都想生在好人家,可无法选择父母。发给你什么样的牌,你就只能尽量打好它。 —— 《时生》
只要想到你能活下去,即便在现在这一瞬间,我也已经感受到了未来。确信自己喜欢的人能够好好地活着,即便面对死亡,也看到了未来。对你父亲来说,你母亲就是未来。人不论在什么时候都会感受到未来。无论是怎样短暂的一个瞬间,只要有活着的感觉,就有未来。 ——《时生》
确信自己喜欢的人能好好地活着,即使面对死亡,也看到了未来。 —— 《时生》
「没有脚踏实地建立起来的东西,就无法形成精神和物质上的支撑。」 —— 《时生》
「今后你也会喜欢各种各样的人,正因为活着才能这样。」 —— 《时生》
“真了不起!竹美,真看不出你吃过这么多苦。” “吃了苦就挂在脸上那才叫惨哪。再说,悲观也没用。谁都想生在好人家,可无法选择父母。发给你什么牌,你就只能尽量打好它。”她看了看拓实,“小学里学不学英语又怎样?这点小事就能改变人生?” 拓实低下头。看来竹美听见了他的话。 —— 《时生》
梦总是突然醒的,就像泡沫一般,越吹越大,最后啪地破灭,什么也没有,除了空虚。 —— 《时生》
确信自己喜欢的人能够好好地活着,即便面对死亡,也看到了未来。对你父亲来说,你母亲就是未来。人不论在什么时候都会感受到未来。无论是怎样短暂的一个瞬间,只要有活着的感觉,就有未来。我告诉你,未来不仅仅是明天。未来在人心中。只要心中有未来,人就能幸福起来。因为有人教了你母亲这个,她才将你生下来。可你看看自己,整天牢骚满腹,不思进取。你感受不到未来不能怪自己,要怪你自己,因为你是个混蛋 —— 《时生》
“其实,我现在这个样子是借来的,借用了生在当代的某人的身体,至于为什么会这样,我也不明白。估计多想也没用,并且,我有事情要做,就是找到你,线索只有花屋敷一条,但已经足够——已经找到你了,命运还真不错。” —— 《时生》
只要想到你能活下去,即便在现在这一瞬间,我也已经感受到了未来。 —— 《时生》
不管什么问题,都必然存在着答案。 —— 《盛夏的方程式》
“不光只是坐到前排的问题,视线也有很大的关系。比方说,当车子行驶在弯道比较多的路上时,身体就会因为离心力的作用而向着外侧甩出去。这种时候,如果你的视线也跟着甩动的话,那么半规管的情报和视线情所就会变得不再一致,大脑也就会出现混乱。这样一来,人就会晕车。如果你把目光固定到车子前进的方向上去,那么就不容易出现这种症状了。那些会晕车的人在自己开车时没事,也是因为他们的目光一直都盯着前方。” —— 《盛夏的方程式》
学者遇到研究瓶颈的时候,其原因一般都不会出在研究本身上,大多数的原因都是环境或者人际关系这类和研究毫无关系的问题。 —— 《盛夏的方程式》
"不管什么问题,都必然存在着答案。"汤川两眼盯着恭平,"但是,答案却未必都是能够立即导出的。这一点同样适用于人生。今后,或许你还会遇到许多无法得出答案的问题。为了寻求答案,很多时候你必须让自己长大。所以,人必须学习、努力、磨练自我。" —— 《盛夏的方程式》
"你不喜欢理科,那倒也无所谓。不过你最好记住一点,如果你还是觉得'不知道的事就是不知道'的话,那么迟早有一天,你会犯下大错的。" —— 《盛夏的方程式》
“你的任务,就是珍惜你自己的人生。而且还要比之前更加珍惜。” —— 《盛夏的方程式》
东野圭吾文集 链接: https://pan.baidu.com/s/1skERy8l 密码: 53yw