Tại sao tôi nhận được ...
Uncaught TypeError: string.split không phải là một hàm
... khi tôi chạy ...
var string = document.location;
var split = string.split('/');
Tại sao tôi nhận được ...
Uncaught TypeError: string.split không phải là một hàm
... khi tôi chạy ...
var string = document.location;
var split = string.split('/');
Câu trả lời:
Thay đổi điều này...
var string = document.location;
đến đây ...
var string = document.location + '';
Điều này là do document.location
là một đối tượng Vị trí . Mặc định .toString()
trả về vị trí ở dạng chuỗi, vì vậy việc nối sẽ kích hoạt điều đó.
Bạn cũng có thể sử dụng document.URL
để lấy một chuỗi.
toString()
thay vì nối hacky?
+ ''
là một thủ thuật khá phổ biến để ép buộc chuỗi, nhưng một số người thích toString()
phương pháp này hơn. Tôi sẽ không coi nó là hacky hơn việc sử dụng một ngôi +
để chuyển đổi số.
parseInt()
và parseFloat()
. Ngoài ra còn có Number()
. Tất nhiên +
là ngắn hơn, nhưng ít dễ đọc hơn đối với những người không quen sử dụng mã hacky hoặc ít kinh nghiệm.
+ ''
phương pháp không thay đổi bất cứ điều gì cho tôi trong Trình duyệt Chrome nhưng toString()
không.
chạy cái này
// you'll see that it prints Object
console.log(typeof document.location);
bạn muốn document.location.toString()
hoặcdocument.location.href
document.location
không phải là một chuỗi.
Bạn có thể muốn sử dụng document.location.href
hoặc document.location.pathname
thay thế.
Trong clausule if, use ()
. Ví dụ:
stringtorray = "xxxx,yyyyy,zzzzz";
if (xxx && (stringtoarray.split(',') + "")) { ...
document.location
là một đối tượng. Hãy thử:var string=document.location.href