我知道有更好的方法来检查一个空的字符串
这通常不是检查空字符串。我实际上是在做这样的事情:
var s = /*who knows?*/;
switch (s.charAt(0)) {
// ...
}我想知道我是否可以避免做额外的if (!s)。
发布于 2011-11-23 15:29:21
是的,只要该值是有效字符串。语言规范第15.5.4.4节说
自ES3以来,这一点没有改变。解释器在字符串函数兼容性方面非常好。
尽管如此,我最近实现了charAt到闭包编译器的窥视孔优化,但我没有优化越界检查,因为编译器往往不会优化那些被认为是程序员错误的内容。
发布于 2011-11-23 15:27:16
是的,如果索引超过字符串的长度,它将始终返回""。
取自函数
字符串中的字符将从左到右进行索引。第一个字符的索引为0,名为stringName的字符串中的最后一个字符的索引为stringName.length - 1。如果您提供的索引超出了范围,JavaScript将返回一个空字符串。
发布于 2011-11-23 15:26:42
回答经修改的问题(或我认为问题是什么):
如果变量未定义或未定义为string类型,则.charAt将失败。
做一些类似的事情
if (typeof s == "string") {
switch(s) {
//...
}
}https://stackoverflow.com/questions/8244688
复制相似问题