《假设的世界-一切不能想当然》笔记

本书探讨了科学领域中的各种假设及其对我们思维的影响,鼓励读者跳出固有观念,以更开放的态度面对世界。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【日】 竹内薰 著


本书通过各类科学领域的事例,介绍了支配着我们头脑的各种假设,并向各位传授了不依照成见进行判断的诀窍。


序章 飞机为什么会飞

–其实啊……目前还没人能解释清楚

总结

全世界都是假设!
你心目中那些经过科学方法验证的定论,其实都是假设。你脑子里的各种常识,也不过是假设而已。
本书的中心思想可以归纳以下三点:

  • 这个世界是由假设构成的。
  • 科学绝不是万能的。
  • 我们的头脑都已经僵化了。

思考

请注意,看这本书时你已经进入了一个假设的世界,也就是说,这本书的观点也是一种假设。你可以怀疑,理解,或者提出自己的想法。


第一章 世界是由假设构成的

总结

  • 常识不过是一种成见
    所谓常识,就是指生活在那个时代和那个地区的大多数人脑中根深蒂固的观念。在之后的章节,我们会将这类常识称为“假设”。毕竟,常识都不过是假设而已
    我们的世界观,还有父母和学校教给我们的知识,都是假设
    然而,很少有人能明确意识到我们的常识都是假设。
  • 头脑僵硬的人和头脑灵活的人
    如果你被常识框的死死的,没有意识到自己脑子里都是假设,那不得不说,你是一个头脑僵硬的人。头脑越僵硬,就越容易随波逐流,任人摆布。
  • 出门旅游是颠覆常识的好机会。
  • 摆脱根深蒂固的假设的确很难。
    当然,我们不可能为了摆脱脑子里的常识环游世界,也不肯能穿越时空,但是可以养成怀疑常识的习惯。如此一来,你看待世界和感知世界的角度也会和原来大不相同。
  • 大胆怀疑常识吧!

思考

虽然或许我们的常识都是假设,但是生活中我们离不开这些常识,如果每个常识都要仔细推敲,那么学习和工作的效率肯定会降低。反之,我觉得只要我们达到能意识到这些是假设就行了,当需要进行知识或理论的专项思考和扩展时,就可以大胆怀疑这些常识了。


第二章 察觉自己头脑中的假设

总结

  • 数据不能推翻假设,也不能改变理论。唯有理论才能推翻理论—皮埃尔迪昂
  • 唯有理论才能推翻假设
  • 假设其实就是一个框架
    不属于这个框架的数据,自然就无法发挥出数据应有的功能。
  • 如何推翻框架
    唯一的办法就是构筑起一个全新的框架。必须有人提出一个全新的假设,并在此基础上深入思考,只有这样才能推翻现有的假设。
  • 人会从有利于自己的角度诠释事物
    当事实与现有框架不符合时,人们往往会歪曲事实,把它硬塞给框架中。当当事人并没有意识到自己在歪曲事实。正因为是无意识的,才无法察觉到自己已经被某个假设牢牢束缚住了。
  • 能够推到旧假设的,只有那些察觉到旧假设的存在,并在此基础上构筑起新的假设的人

思考

假设和事实,不是一个维度,事实是由数据组成,按照书中观点,那么事实也不能推翻假设,只有提出新的假设,再用数据验证,推翻旧的假设。你认为呢?


第三章 假设的一百八十度大逆转

总结

  • 世上没有“绝对正确的事”
    “正确的方法会随着时代的变迁而变化”。
  • 假设分为很多种。
    经过实验的反复验证,深入人心的假设,就是“白色假设”,然而,看似完美的假设也有可能被颠覆。
    无限接近谎言、不符合实验与观察结果的假设,就是“黑色假设”。不过这样的黑色假设也有可能在某一天突然转化为白色假设。
  • “灰色假设”。
    灰色假设介于黑色与白色之间。
  • 决定假设是黑还是白,其实是我们身边的人。
    同时代的大部分专家都认为这个假设是正确的,那它就是白色假设,反之,如果大多数专家认为这个假设是错误的,那它就是黑色假设。如果专家的意见不统一,那它就是灰色假设。
    人类
    构筑的世界是建立在语言上的。从这个角度来看,我们甚至可以说所有文化都是假设。
  • 看上去再白的灰色假设,也有可能突然变黑,反之亦然
    我们要大胆跳出固有观念,避免先入为主,用智慧与灵活的思路应对迅速变化的世界。

思考

这章可以理解为要用辩证的观点看待周围的事物,很多事物并不是非黑即白,而是处于有时黑有时白的灰色地带。


第四章 假设与真理的纠结关系

总结

  • 科学必须可被证伪
    二十世纪最具代表性的科学哲学家卡尔波普尔在著作中《科学发现的逻辑》中对“科学”做出了如上定义。举个例子,即便你做了一百万次实验,得到了一百万个能够支持这个理论的结果,要是第一百万零一次的结果与理论不符,并且是精密的实验数据的话,那理论就失去了它的正确性。
    总而言之,我们无法彻底证明某个理论的正确性。这就是科学与数学的区别。数学是可以被证明的,因为数学是“概念”,是头脑思考的产物。
  • 科学原本是哲学。
    即便是今天,如果你在西方国家拿到科学领域的博士学位,你得到的称号依然是“哲学博士”。
  • 历史也不过是假设的集合体。

思考

假设和真理有类似的地方。真理也是不断发展的,随着时代的变化,真理也有可能转化为谬误。
但是也有不同,世上存在绝对真理(相对于人类),而不存在绝对假设(按照书中观点)。


第五章 “大假设”的世界可能存在

总结

  • “智慧设计者”大假设
    这个假设由加利福尼亚大学圣地亚哥分校的研究人员在1999年提出——宇宙的某处有一位智慧设计者,就是他设计了DNA,创造出了地球生物。
  • 大爆炸并不是宇宙的起源
    从某种角度来看,大爆炸假设和达尔文的进化论非常接近。因为这两套假设完全没有提及宇宙的起源,却完美的解释了宇宙起源之后的发展。。
  • “超弦理论”大假设
    作者说,超弦理论是一种诠释宇宙森罗万象的终极理论。
  • 不懂装懂最危险
    还没搞清楚的事情,就应该老老实实告诉对方,这件事现在还没搞清楚。模棱两可的态度最害人。
    如果把没有百分之百搞懂的东西说成已经完全搞懂了的东西,用填鸭式方法塞进大家脑子里,大家就会先入为主,也就不容易对此抱怀疑的态度。

思考

非常同意作者最后一个观点。先入为主就可能直接扼杀了创意的种子。
当我们被先入为主时,应该有这种辨别的意识,不要被其影响。


第六章 撇开假设进行思考

总结

  • 角色理论
    人人都有多重人格。角色理论和相对论建立在同样的基本思路上——对象在你眼中的模样,会随着场景的变化而变化。
  • 学会看开,才能理解相对论。
    一个人有多重人格这个大道理,谁都能理解,但我们很难从这样的角度看待他人。有多少人,就有多少种口味。有多少人,就有多少时间。时间和口味一样,都很主观,都会随着观测者的变化而变化。
  • 撇开假设的思考方法。
    看似理所当然、深入人心的假设,撇开它进行思考,会意外的发现也是可行的。
    “老师、父母和同学都是这么说的,可事情真的是这样吗?”我们可以这么训练自己,养成“质疑”的习惯,要的就是紧咬住不松口的劲。
  • 在生活中提升“质疑技术”。
    我们可以利用身边的小事研究哲学。日常生活的方方面面都有所谓的“潜规则”。在我看来,这些“潜规则”就是我所说的“假设”。
    在现阶段,不否定才是最科学的态度
    我们不能劈头盖脸的认定“这种事不可能发生”,而是应该用肯定的态度对待这样的假设——“虽然它无限接近于黑色,但它终究是个假设呀。”

思考

每个人都有自己的三观,通过本章可以理解为每个人的假设都不太一样,我们看待事物,处理事情都是基于自己的一套方法,这套方法与三观有很大关系,同时也与自己的性格有关,这些都是属于自己的假设。他人要想理解你,就要理解你的假设。反之也一样,你要想理解他人,也要理解他人的假设。或许这就是相对论的泛化吧。
另外,提到质疑。以前我也很赞同怀疑生活中的事物,但是我的出发点是想要创新,而本书提到假设,所以从假设的角度解释质疑一切!


第七章 从相对的角度看事物

总结

  • 我们和霍金活在不同的假设世界中
    他并没有活在实在主义的世界里。他痛快地否定了大部分人共享的“实际存在假设”。他活在“实证主义”的世界中。
  • 虚拟有何不可?
    所谓实证,就是算式与实验数据一致。比如物理学的方程式就是算式,只要这个方程式和实验数据相符就行了,就这么简单。
    然而,看得见摸得着的东西就没有办法用实验去验证它“是否存在”了。换言之,物体的实在性不可能被证实,也不能被证伪。
    霍金认为,只要假设能与实验结果吻合,那这个东西是否真的存在就完全无所谓了。他对实验对象是否存在全无兴趣,因为这不过是无法证明的假设。
  • 现实即梦境,梦境即现实?
    霍金的思路真的和爱因斯坦的相对论非常相似。霍金脑子里有虚时间和实时间假设。这两个假设并没有对错之分,也无法统一成一个假设。也许在霍金眼里,现实与梦境并没有区别。也许他把现实和梦境放在了同一个高度上。
  • 同词不同意
    同词不同意,正式叫法是“不可通约性”,其实就是不可翻译性。
    比如“质量”和“重量”。意思相近,但是它们是两个不同的概念。
    理论并非由单一的假设组成。各种各样的假设复杂交错,才能形成理论的大网。
  • “鸡同鸭讲”的科学原因
    不可通约性不仅仅会出现在科学领域。比如两个人沟通,“这个人怎么就说不通呢?”有时会遇到这样的情况。
    你们之所以无法沟通,也许是因为你们的大前提,即多个假设存在偏差。也就是说,无法沟通就意味着对方没有理解你的假设,或是你没有理解对方的假设。
    只要能察觉到对方立身处世的假设,就能理解对方心中的打算。这就是现实的规律。
    用相对的角度看世界,就能看到在之前假设下无法看到的东西了。
  • 主体间性
    所谓客观,就是遵从公认的较为接近白色的假设。
    所谓主观,就是遵从自己认准的白色假设,不管世人的看法。
    客观与主观并没有优劣之分。关键在于,我们要跳出单纯的一元论和二元论,用更宽阔的视角看待事物。这个宽阔的视角就是主体间性。
    主体间性就是“主观与主观之间的关系”。
    我们可以把主体间性总结成一句话——“站在对方的角度思考问题”。
    不盲目相信“权威”,从相对的角度比较各种各样的意见,并作出判断。这种“灵活”的态度才是科学的态度。

思考

这一章是高潮啊!
总结一下就是讲我们要意识到世界中的假设的存在,从人与人,人与物,物与物等等,都是假设的集合体。每个人的假设空间都不同,两个对象之间的交互就是假设空间的交互,在这个空间里对象可以用各种各样的方式进行交互,前提是理解对方的假设空间,不然,交互的效果就不好。“说不通”就是这个道理。
相对论能扩展到任何领域,从相对的角度看待问题,会发现不同维度下的有趣的事情。


尾声 一切始于假设,也终于假设

参考文献

  • 《西方哲学史》伯特兰罗素 著
  • 《意识的限度关于时间与意识的新见解》恩斯特波佩尔 著(“意识只能持续三秒的假设”就在此书中)

最后的讨论

“问题必然有答案”的说法也不过是个假设。
本书通过各类科学领域的事例,介绍了支配着我们头脑的各种假设,并向各位传授了不依照成见进行判断的诀窍。
常识、成见、固有观念——我并不是让大家把这些东西统统丢掉。
我只是希望大家能暂时“放下”这些负担,让自己身心轻盈。调节好自己的状态后,再投入现实世界,强劲有力地重启你的生活。
光是意识到假设的存在,你看待世界的眼光就会大不相同。
如果你我有缘,一定能在别的假设世界再会!


思考

其实大部分的思考在前几章后面已经总结过了。
最后我想说,解释这个世界有各种各样的方式,本书是其中一种,每个人都有自己的方式。但是没有对错之分,区别就是或许作者的方式合理一些,或者说说得通。如果一种方式被很多人认同,那么可能就会形成理论系统,当然,这又是一个假设。只要我们意识到这是个假设,然后我们可以质疑,也可以应用,看看这个假设的效果如何。我们可以提出自己的假设,要想让别人信服,就要拿出充足的证据,数据一般是最好的证据,因为,这个世界啊,是由数据组成的。


<think>我们参考了用户提供的四个引用,并针对用户的问题“onchange事件未触发的原因及解决方案”进行分析。根据引用[1]和引用[2]:onchange事件在内容改变且失去焦点时触发(对于type="text"的输入框,是实时触发的吗?引用[2]指出,对于type="text",onchange事件是实时触发的吗?实际上,引用[2]澄清:对于type="text",onchange事件并不是实时触发,而是要求前后内容有改变并且失去焦点。引用[2]原文:“onchange事件在针对type="text"时,只要前后内容有改变,就会实时触发回调”——这里可能有误解?让我们重新理解引用[2]:它说“刚转到前端开发时,想当然地以为可以直接套用onchange事件,还别说首次直接用后,还真是能实时监听文本输入的,但后面发现是有前提条件的,那就是要求input的type="text"时才会实时回调”——这似乎说明在type="text"时,onchange是实时触发的?但后面又说“其他type,则相当于严格版的onblur的事件,既要求前后内容有改变并且还得失去焦点”。这里可能存在矛盾。实际上,根据标准,onchange事件并非实时触发,而是在值改变且失去焦点时触发。但引用[2]的作者可能有不同的观察?我们以标准为准:onchange事件在元素的值改变且失去焦点时触发(不论type是什么)。而引用[2]提到type="text"时实时触发,这可能是作者将oninput事件的行为与onchange混淆了?或者可能是浏览器的非标准行为?因此,我们需要澄清:1.标准行为:onchange事件在值改变并失去焦点时触发(适用于所有类型的input)。2.对于type="text",如果用户想要实时监听,应该使用oninput事件(或者onpropertychange事件在IE中,但IE专有)。引用[1]指出:通过JS改变value值,不会触发onchange事件(同样,也不会触发oninput事件),除非你手动触发。这是因为直接通过JavaScript设置value属不会触发事件。引用[3]提到了在Antd的Form中使用onChange事件时,如果手动调用setFieldsValue,会被Antd内部的设置覆盖,因此需要按照Antd的规范使用。引用[4]提供了一种通过重新定义value的setter来触发自定义函数的方法,这样在JS改变value时也能触发。总结onchange事件未触发的常见原因及解决方案:原因1:通过JavaScript设置input的value(如:input.value='newvalue')不会触发onchange事件。解决方案:-在设置value之后,手动触发change事件(创建并分发事件):element.dispatchEvent(newEvent('change'));-或者使用引用[4]的方法,重写value的setter,但注意这可能带来兼容问题,并且只能用于自己创建的元素。原因2:onchange事件需要元素失去焦点才能触发(如果是用户输入)。-解决方案:如果希望实时监听输入,使用oninput事件(或onpropertychange兼容IE)代替。element.addEventListener('input',function(event){...});原因3:在特定的框架(如Antd)中,直接调用setFieldsValue可能会被框架覆盖(引用[3])。-解决方案:按照框架的规范,比如在Antd中,可能需要在Form.Item上设置valuePropName和trigger,或者使用form.getFieldDecorator等方式,避免在onChange中直接调用setFieldsValue。原因4:对于非文本类型的输入(如number,tel,password等),引用[2]指出这些输入在用户输入时并不会实时触发onchange事件,而是需要失去焦点。所以如果你监听的是onchange事件,那么用户输入后没有失焦就不会触发。-解决方案:同样,如果希望实时监听,使用oninput事件。因此,针对用户的问题,我们给出以下解决方案:1.如果是因为通过JS设置value而不触发:在设置value后,手动触发change事件:letinput=document.getElementById('myInput');input.value='newvalue';input.dispatchEvent(newEvent('change'));2.如果希望实时监听用户输入(而不是等待失去焦点),应该使用oninput事件(注意兼容IE9以下使用onpropertychange):input.addEventListener('input',function(e){//处理输入});3.如果在使用Antd等框架时出现问题,应遵循框架的文档,避免直接操作DOM或与框架机制冲突。4.对于非文本类型的输入,如果希望实时响应,同样使用oninput事件。注意:onpropertychange是IE专有的事件,如果需要兼容IE8及以下,可以使用:input.onpropertychange=function(){...};//或者input.attachEvent('onpropertychange',function(){...});但在现代浏览器中,使用oninput即可。因此,用户需要根据自己的实际场景(是监听用户输入还是监听值改变且失焦,以及是否通过JS设置值)来选择正确的监听事件和触发方式。</think> ### onchange事件未触发的原因及解决方案 #### 常见原因分析 1. **通过JS直接修改`value`属** JavaScript直接修改`input.value`不会触发onchange事件(无论type类型)[^1][^4]。 > *例:`document.getElementById('input1').value = '123'`不会触发onchange* 2. **输入框未失去焦点** 对非文本类型输入(如`type="number"`/`password`/`tel`),**必须同时满足两个条件**: - 值发生改变 - 输入框失去焦点(blur)[^2] 3. **Antd等框架的特殊机制** 在`Form`组件的`onChange`中手动调用`setFieldsValue`会被框架内部逻辑覆盖[^3] 4. **值未实际变化** 若旧值等于新值(即使通过JS修改),不会触发事件[^1] --- #### 实用解决方案 **▌ 场景1:需要实时监听值变化** ```javascript // 使用oninput(现代浏览器) + onpropertychange(IE兼容) input.addEventListener('input', callback) // 实时响应键盘输入 input.addEventListener('propertychange', callback) // 支持IE[^1][^2] ``` **▌ 场景2:通过JS动态修改value** ```javascript // 方案1:手动触发change事件 input.value = "new value"; input.dispatchEvent(new Event('change')); // 主动触发事件[^1] // 方案2:重写value setter(示例原理)[^4] Object.defineProperty(input, 'value', { set(v) { this._value = v; this.dispatchEvent(new Event('change')); // 赋值时自动触发 }, get() { return this._value; } }); ``` **▌ 场景3:处理Antd框架覆盖问题** ```jsx // 使用form.validateFields()替代直接赋值[^3] <Form.Item name="username"> <Input onChange={async() => { await form.validateFields(['username']); // 通过验证机制更新值 }}/> </Form.Item> ``` **▌ 通用兼容方案** ```javascript function safeSetValue(input, value) { if("createEvent" in document) { const evt = document.createEvent("HTMLEvents"); evt.initEvent("change", false, true); input.value = value; input.dispatchEvent(evt); // 兼容老浏览器 } else { input.value = value; input.dispatchEvent(new Event('change')); } } ``` --- ### 关键总结表 | **场景** | **推荐方案** | 兼容 | |-----------------------|--------------------------------|-------------| | 用户输入时实时监听 | `oninput` + `propertychange` | 全浏览器兼容 | | JS修改input值 | `dispatchEvent('change')` | IE9+ | | Antd表单中的值修改 | `form.validateFields()` | Antd 4.x+ | | 旧值等于新值的边界情况 | 预先判断 `oldValue !== newValue` | 所有场景 | > **特殊注意**:对于`<input type="file">`元素,由于安全限制,**无法通过JS触发其change事件**,必须由用户手动操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lingpy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值