我正在尝试编写一个简单的javascript(well coffeescript)测试并且有一些令人困惑的事情:
dclib.appendVarToUrl = (base, k, v) ->
check base, String
console.log("base is a:", typeof(base))
if base.includes("?")
...
// called with
dclib.appendVarToUrl("some/url", "score", 5)
给了我:
base is a: string
TypeError: Object some/url has no method 'includes'
那么为什么String没有.includes()方法呢? 这个coffeescript是以一种奇怪的方式包裹着一个物体吗?
答案 0 :(得分:1)
啊哈,看起来我的浏览器支持这个作为ES6方法,但是我使用的节点版本并没有。我在服务器上运行单元测试,而方法在客户端运行正常。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes
这是一项实验技术,是ECMAScript 6(Harmony)提案的一部分。
答案 1 :(得分:0)
According to Mozilla确实没有。您可能正在寻找.indexOf
。
答案 2 :(得分:0)
根据规范.includes()是ECMAScript 6 JavaScript版本的一部分。因此,许多平台仍然不支持它。
您可以使用等同且属于ECMAScript 1 JavaScript版本的.indexOf()!=-1
替换。根据规范.indexOf()
,当它找不到特定的字符串时返回-1。
因此a)和b)是等价的
a)ECMAScript 6
var str = "Hello world";
if (str.includes("world")){
return true
}
b)ECMAScript 1
var str = "Hello world";
if (str.indexOf("world")!==-1){
return true
}