晨雾还未散尽,后湖的芦苇荡在风里沙沙作响。林浩把运动耳机往下一扯,跑鞋碾过木栈道上的露水,溅起细碎的水痕。他习惯在七点半前绕湖三圈,这是前女友小芸走后他养成的新习惯——用固定的节奏对抗生活里无序的裂痕。
转过第七个弯道时,他闻到了铁锈味。
木栈道尽头的老槐树下,长椅旁的灌木丛微微晃动。林浩放慢脚步,运动手环的心跳声在耳边炸响。他蹲下身,看见一截米色裙角从灌木丛里露出来,布料上沾着暗褐色的污渍。
“喂?”他轻声喊了两句,没有回应。
手指触到那片裙角时,他听见自己的呼吸声突然变得很响。再往上是苍白的脚踝,沾着泥的运动鞋,然后是蜷缩的身体——女人的脸埋在臂弯里,深褐色长发凌乱地黏在脸颊上,右手攥得死紧,指节泛着青白。
林浩后退两步,撞翻了脚边的空矿泉水瓶。他摸出手机要打120,屏幕亮起的瞬间,女人动了动,喉间溢出一声破碎的**。
“别怕,我报过警了。”他听见自己的声音发颤,“救护车马上来。”
女人没有抬头,右手却慢慢松开了。一张皱巴巴的便签纸掉在青石板上,上面的字迹被晨露晕开,却仍能辨认出几个字符:
let secret = "2025-08-15";
林浩的瞳孔骤然收缩。
便签边缘有被撕毁的痕迹,残留的毛边像被利器划过。他蹲下身,用手机拍了张照片,指尖悬在发送键上,最终却点开了备忘录——那里存着他用JS写的「日常决策树」,从「早餐吃包子还是豆浆」到「遇到可疑人员是否报警」,全是用代码逻辑标注的。
“林先生?”
警笛声由远及近。林浩站起身,看见三个穿警服的人快步走来,为首的中年男人眉骨很高,眼角有道旧疤,正是市刑侦支队队长周正。
“怎么回事?”周正的目光扫过尸体,又落在林浩身上,“你是第一个发现的?”
“晨跑路过。”林浩指了指地上的便签,“她手里有这个。”
周正蹲下身查看便签,皱着眉抬头:“什么意思?加密信息?”
“是JavaScript代码。”林浩脱口而出,“let是变量声明关键字,secret是变量名,值是日期字符串。”
周正挑了挑眉:“你懂编程?”
“前大厂全栈工程师。”林浩摸出身份证,“林浩,现在自由职业。”
周正的手指在便签上敲了敲:“所以这是死者留下的死亡讯息?”
“可能。”林浩盯着便签边缘的撕痕,“但let声明的变量是块级作用域,容易被重新赋值。如果是自杀,她应该用const——const secret = ...,这样值就不能被修改了。”
周正似懂非懂地看着他:“你的意思是,凶手伪造了这个?”
“或者凶手故意留下let,让我们以为secret的值会被篡改。”林浩蹲下来,用手机备忘录画了个简单的代码块,“比如,假设凶手想误导我们,把日期改成其他时间,但用let的话,修改会留下痕迹——而const不行。”
“可她为什么不用const?”周正摸出对讲机,“小王,联系法医,现场有可疑物品。”
“等等。”林浩指着便签上的日期,“8月15号……今天是9月1号,已经过去半个月了。”他抬头看向尸体,“她的死亡时间应该更早?”
周正的对讲机里传来回复:“法医初步判断,死亡时间在8月28日至30日之间。”
林浩的太阳穴突突跳起来。他想起三天前刷到的本地新闻:“科技媒体记者李雨桐失联”,配图里的女人正是眼前的死者——深褐色长发,眼尾有颗泪痣。
“她是李雨桐?”林浩轻声问。
周正点头:“你怎么知道?”
“上周她发过一篇关于宏远科技慈善捐款的调查报道。”林浩摸出手机,翻出收藏的新闻链接,“文章里说,宏远科技三年前捐建的希望小学,实际只拨了三分之一的款项。”
周正的眼神变了:“你和她认识?”
“不认识。”林浩摇头,“但我关注过她的账号。她最近还在社交平台发过定位,说要去‘老地方’见人。”
“老地方?”
“她采访里提过,是后湖公园西门的咖啡馆。”林浩指向栈道另一侧,“监控应该拍到她进咖啡馆的时间。”
周正的对讲机再次响起:“队长,李雨桐的手机找到了,在她外套内袋里。最后一条聊天记录是8月29日晚上七点,内容是:‘今晚老地方见,地址:location.href + '?id=' + Math.random()’。”
林浩的手指在屏幕上快速敲击,仿佛在调试代码:“location.href是当前页面的URL,Math.random()生成0到1之间的随机数。如果她是在咖啡馆的公众号对话框里发的,那真实地址可能被藏在参数里。”
“什么意思?”
“比如,咖啡馆的公众号域名是cafe.com,但如果凶手在后台修改了链接,把api路径加进去,那实际地址可能是cafe.com/api/transfer——Math.random()只是用来混淆视听的。”林浩抬头,“西门的咖啡馆叫‘慢时光’,我去过,他们的公众号菜单栏有隐藏的API接口,用于会员积分查询。”
周正盯着他,像在看某种稀有生物:“你确定?”
“我上周帮朋友改过他们的公众号代码。”林浩笑了笑,“要现在去看看吗?”
周正的对讲机又响了,这次是法医的声音:“队长,死者右手虎口有轻微擦伤,像是被尖锐物体划伤的。另外,她手腕内侧有针孔,初步判断是注射过某种镇静剂。”
林浩的瞳孔再次收缩。他想起便签上被撕毁的边缘,想起李雨桐新闻里提到的“宏远科技前员工举报内部贪腐”——那些被删除的聊天记录,被清空的服务器日志,还有此刻死者手里这张用let声明的、随时可能被修改的“秘密”。
“周队。”他蹲下来,轻轻碰了碰李雨桐的手背,“她不是自杀。”
周正没说话,只是示意法医继续检查。林浩望着晨雾里摇晃的芦苇,突然想起自己写在备忘录里的一句话:
if (life.getUnexpectedEvent()) { debug(); }
而现在,他的调试模式,才刚刚启动。
救护车的鸣笛声刺破晨雾时,周正突然拽住林浩的手腕:“你刚才说的let和const,再给我讲一遍。”
林浩愣了愣,随即笑了:“let声明的变量可以重新赋值,const声明的变量不能——但如果const的对象属性被修改,它不会报错。比如……”
“停。”周正从口袋里摸出个小本子,“记下来,回头我让技术科的人学。”他抬头看向正在抬走尸体的法医,“李雨桐的社交圈,重点查宏远科技,还有她最近接触过的程序员。”
“包括前技术主管赵立?”林浩接口道,“我查过,李雨桐上周采访过他,文章里提到宏远科技的慈善系统有‘数据异常’。”
周正的手指在笔记本上重重敲了一下:“赵立……半年前因为代码泄露被开除,当时负责的就是那个慈善系统。”
林浩的手机震动起来,是大学室友陈明的消息:「紧急!暗码组织在暗网发了条消息,说“代码不会说谎,说谎的人会死”。」
他盯着屏幕,后颈泛起凉意。暗码——那个传说中用代码作案的黑客组织,三年前曾用一段斐波那契数列破解了某银行的防火墙。
“周队。”他抬头,“李雨桐的调查,可能比我们想的复杂。”
周正看了眼手表,晨雾已经散尽,阳光透过梧桐叶在地上投下斑驳的光斑:“去咖啡馆。”他拍了拍林浩的肩,“你开车。”
林浩坐进驾驶座时,摸出兜里的便签纸。晨露已经干了,let secret = "2025-08-15";的字迹有些模糊,但let两个字母依然清晰。
他把车钥匙插进点火孔,轻声说:“let的变量作用域是块级的……但如果是全局作用域,let和var的区别就只是会不会挂载到window对象上。”
“说什么呢?”周正皱眉。
“解释给你听。”林浩转动方向盘,后视镜里映出咖啡馆的招牌,“如果凶手用了var,那secret会是全局变量,很容易被检测到;但用let,变量只在当前块里有效——除非,他修改了作用域。”
他踩下油门,车子驶出后湖公园时,手机弹出一条新消息。是陈明发来的链接,标题是:「暗码组织最新动态:JS代码中的死亡陷阱」。
林浩点开链接,页面加载出的第一行代码是:
let truth = "等待被重新赋值";
本书首发来自17K小说网,第一时间看正版内容!
1 永夜
作者: 江火香猫
科幻末世 1042417 字
永夜:浩劫余生,终见光明
2 校花别沾边,重生的我只想搞钱
作者: 十万字
都市小说 789066 字
都重生了,还不好好搞钱?
3 我死后,姐姐们才开始爱我
作者: 木马非马
都市小说 80082 字
我死后,全家人才开始知道爱我,可我已经死了
4 上门狂婿
作者: 狼叔当道
都市小说 8171953 字
上门赘婿,受辱三年,期约一到,强者归来!
5 武圣之上
作者: 任我独行侠
玄幻奇幻 201339 字
这是个废材靠着金手指,逆天改命的故事!
6 60年代:开局荒年,我带着全村吃肉
作者: 妞妞骑牛
都市小说 415929 字
穿越60年代:开局荒年,我带着全村吃肉
7 这位诗仙要退婚
作者: 人世几春秋
历史军事 1194814 字
这位诗仙要退婚:文韬武略
8 玄幻:遇强则强,我的修为无上限
作者: 史上最帅作者
玄幻奇幻 1481875 字
获得遇强则强系统,我直接啪啪给了天道两个大嘴巴子
9 红豆缘:炮灰也要长命百岁
作者: 翘褚
古代言情 271116 字
开局炮灰剧本怎么办?不慌,苟着苟着就到大结局了
10 神龙诀之九龙剑诀
作者: 光环美男
仙侠武侠 1003350 字
江湖传闻要是得到《神龙诀》,就可以称霸武林!
《第一章 木栈道的「变量声明」》最新评论
评论本章还没有人发表评论哦~
我来说两句