开发者问题收集

JavaScript split() 不起作用!完全被难住了

2014-03-25
83
filename = "file_1";
name = filename.split('_');
test1 = name[0];
test2 = name[1];
console.log(test1);
console.log(test2);

预期结果:

file
1

实际结果:

f
i

http://jsfiddle.net/j667q/1/

我肯定是做错了什么,但我无论如何也想不出是什么。

我试过:

  • 使用不同的引号 ' 和 "
  • 在使用 (filename = ''; name = [];) 之前定义文件名和名称
  • 使用不同的字符 ('-') 进行拆分
3个回答

首先定义数组变量:

var name = [];

DEMO http://jsfiddle.net/j667q/5/

为什么这样?

根据评论更新以获得更多说明:

尽管 name 不是保留字,但它是 window 的全局属性(例如 window.namename 意思相同), var name; 将定义一个名为 name 的新变量,该变量位于另一个作用域中并避免了冲突。

JavaScript 保留字: http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Reserved_Words

Arbel
2014-03-25

问题是,与 全局冲突 有关,全局对象有一个名为 name 的属性,并且在某种程度上与您的代码冲突。

将其重命名为 http://jsfiddle.net/j667q/3/

如果不想重命名,可以执行 var name = ...split...

是的,还请注意,您应该 始终 使用 var 声明变量,没有理由不这样做,如果您想要一个全局属性,请执行 window.someName = something;

iConnor
2014-03-25

将变量声明为 var 以正确限定其范围

var filename = "file_1";
var names = filename.split('_');
test1 = name[0];
test2 = name[1];
console.log(test1);
console.log(test2);
Pete TNT
2014-03-25