我正在研究一个小挑战,以实用的方式学习Javascrcipt,而不仅仅是学习它的“理论”。
我正在编写的部分代码如下:
let count;
splitStory.forEach(function(element) {
if (overusedWords.includes(element)) {
count = count + 1;
}
})
console.log(count);
当我运行该功能时,它将NaN
记录到控制台。但是,当我将let count;
更改为let count = 0
时,它将记录应记录到控制台的正确数字。据我了解,对变量使用let
声明是有效的,但是在这种情况下,似乎存在问题。如果将count = count + 1;
替换为count = 'sample_string'
,它将起作用并将'sample_string'
记录到控制台。这引出我的问题,除非声明中另外指定,否则变量的默认数据类型是否为字符串?
JavaScript支持变量类型。它根据变量在运行时的值修改数据类型。
例如,如果您使用一些'字符串'值初始化变量,例如-
let count = 'someString'; //data type would be string
以及稍后,如果您再次分配一些数字值,例如-
count = 23 // data type of count becomes number
但是,如果您不分配任何值而只声明变量,则其数据类型为“ undefined”。
所以在您的情况下,您写:let count;
等于:
let count = undefined;
希望这可以澄清您的疑问。
用var或let声明的变量的默认值是undefined,除非您将其初始化为一个值,在这种情况下,它将获取该值的类型。如果不初始化它,则在将其设置为某个值之前不会得到类型。
请参见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let
和https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var