“不惧怕争论,也不要带情绪,保持理性争论才能获得提升。有时候一直以来以为正确的,说不好真实不一定就是你想的那样。”

昨天,A群有个人问了一道题:

var obj = {
  say: function() {
    console.log(obj); // 为什么输出undefined
  }()
};
obj.say();

先说结果。其实这道题是很简单的,只要注意在自执行函数执行过程中,obj变量尚未完成赋值就行了-----所以这时候打印的是执行上下文创建阶段的obj的值(undefined);如果是let声明,那就是打印未初始化的变量obj,将在一开始就报错。如果非要用执行上下文来解释的话,详细的过程看下图:


但是问题就在于,我坚信A群的看法是正确的,并且把这个问题带到了B群,引发了一场激烈的讨论(幸亏最后没有撕起来),我在那时是完全听不进B群的解释的。虽然下午争论的时候不了了之,但是晚上的时候我还是放不下这道题,于是选择到StackOverflow提问,之后又结合 Javascript visualizer 看到了代码执行的可视化过程,这时候我才明白自己的想法是错误的,B群的解释才是正确的。

为什么我会在一开始那么相信A群的说法?我开始思考这个问题。

首先是因为我没有从完全空白的状态去独立思考这道题,而是依附别人的看法去建立对这道题的认知;其次是因为我太相信那些看上去很权威的人,A群在我眼中是大佬云集的群,所以我很笃信他们的看法,但是大佬就一定是对的吗?就像那些传播很广的转载和翻译的文章,为什么要在没有任何根据的情况下去相信这些文字?换句话说,为什么不回到信息源头确认一下,打消自己的疑虑?在我看来,这根本不是钻牛角尖,我想表达的意思是:如果你不确定,你就想办法去确定,不要带着连自己都怀疑的东西继续自己的学习;对于A群的过度相信还和对B群的不信任有关,我向来是很讨厌扯高嗓子显得自己最有道理的那类人的,所以当B群的群友(有点激动地)发表自己的意见时,我并没有把他的话太放在心上,而结果却证明他说的才是正确的。

另一个值得思考的地方是,如何在交流中保持自己的理性。

B群有个群友说了一段话,我觉得很在理,这里拿出来分享一下,共勉:

不惧怕争论,也不要带情绪,保持理性争论才能获得提升。有时候一直以来以为正确的,说不好真实不一定就是你想的那样。

网络世界中,交谈起来往往是无所顾忌的,这种无所顾忌让撕逼变成了一种常态(我自己加了很多社群,所以清楚不过了)。那么如何做到理性的交流?
第一点,找那些值得交流的人。如果你发现一个人在交流中带有太多的个人情绪、对人不对事,那么请不要继续和他浪费口舌。有没有个人情绪看他说话方式和内容就知道了,尤其是不断加各种感叹号以示强调的人,早点远离为好。值得交流的人,是那种即使打心眼里无法认同你的看法,也能安静地听你陈述的人,大有一种“我不赞同你的观点,但我誓死捍卫你说话的权利”的感觉。想一想,能做到这样的人真的多吗?
第二点,清楚自己的目的。争论也好,交流也好,不要偏离自己的目的。很多情况下,你不仅仅是为了一个答案,还想要寻求自我认知修正的机会。确实,我们一直以来认为正确的不一定就是我们想的那样,正因为我们的认知有可能是错误的,所以才要在交流中试图找出这个错误,从而获得提升。知识不是一成不变的,所以请随时做好推翻自己想法的准备。