首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“.‘.charAt(0)可靠”吗?

“.‘.charAt(0)可靠”吗?
EN

Stack Overflow用户
提问于 2011-11-23 15:25:19
回答 3查看 584关注 0票数 1

我知道有更好的方法来检查一个空的字符串

这通常不是检查空字符串。我实际上是在做这样的事情:

代码语言:javascript
复制
var s = /*who knows?*/;
switch (s.charAt(0)) {
    // ...
}

我想知道我是否可以避免做额外的if (!s)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-23 15:29:21

是的,只要该值是有效字符串。语言规范第15.5.4.4节说

  1. 位置为ToInteger(pos)。
  2. 设大小为S中的字符数。
  3. 如果位置<0或位置≥大小,则返回空字符串。

自ES3以来,这一点没有改变。解释器在字符串函数兼容性方面非常好。

尽管如此,我最近实现了charAt闭包编译器的窥视孔优化,但我没有优化越界检查,因为编译器往往不会优化那些被认为是程序员错误的内容。

票数 4
EN

Stack Overflow用户

发布于 2011-11-23 15:27:16

是的,如果索引超过字符串的长度,它将始终返回""

取自函数

字符串中的字符将从左到右进行索引。第一个字符的索引为0,名为stringName的字符串中的最后一个字符的索引为stringName.length - 1。如果您提供的索引超出了范围,JavaScript将返回一个空字符串。

票数 3
EN

Stack Overflow用户

发布于 2011-11-23 15:26:42

回答经修改的问题(或我认为问题是什么):

如果变量未定义或未定义为string类型,则.charAt将失败。

做一些类似的事情

代码语言:javascript
复制
if (typeof s == "string") {
    switch(s) {
        //...
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8244688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档