在字符串上找不到 .substring 函数

Jon*_*n G 6 javascript

在这个片段中,我试图从链接的 href 中提取一个子字符串。

let current_link = $(data, ownerDocument).find('#footbar>span>a[href^="/shortlinks"]').attr('href');
let current_number = current_link.substr(current_link.indexOf('/dex/')+5);
Run Code Online (Sandbox Code Playgroud)

出于某种原因,当我在第二个中断点并在控制台中评估该行时,我得到了我期望的子字符串,但是当我让脚本在没有断点的情况下运行时,我收到以下错误:

jQuery.Deferred exception: current_link.substr(...) is not a function
TypeError: current_link.substr(...) is not a function
Run Code Online (Sandbox Code Playgroud)

我添加了一些调试来向自己证明这current_link实际上是一个字符串:

let current_link = $(data, ownerDocument).find('#footbar>span>a[href^="/shortlinks"]').attr('href');
console.log(typeof(current_link)) // debugging
console.log(Object.getPrototypeOf(current_link)); // debugging
let current_number = current_link.substr(current_link.indexOf('/dex/')+5);
Run Code Online (Sandbox Code Playgroud)

打印出的两个 console.log 行:

> string
> String {"", constructor: ƒ, anchor: ƒ, big: ƒ, blink: ƒ, …}
>     anchor: ƒ anchor()
      ...
>     substr: ƒ substr()
      ....
>     __proto__: Object
>     [[PrimitiveValue]]: ""
Run Code Online (Sandbox Code Playgroud)

我已经回顾了三个相似但我认为不适用的问题,因为通过原型我知道这current_link是一个字符串:

编辑:我制作了一个 jsfiddle 来演示发生这种情况的代码的结构。不幸的是,该错误没有在小提琴中重现,但希望显示结构有所帮助。 小提琴

我无法链接到运行此代码的页面,因为它是 TamperMonkey 用户脚本的一部分,因此通常不是网页的一部分。

第二次编辑:这实际上不是与子字符串函数或字符串相关的问题。我需要在末尾加一个分号let current_number = ...以避免自动分号插入 (ASI) 出现问题。