1. 题目说明
给定一个字符串,计算字符串中每个字符出现的频率,并打印结果。
举例:若给定字符串为hello, 则需要输出:‘h’:1 ; ‘e’:1; ‘l’:2; ‘o’:2;
也即,在字符串hello,字符h出现1次,字符e出现2次,以此类推。
2. 代码实现
先定义一个全局变量oResult对象来存储运行的结果,我们预期将结果存储中键值对的形式。
定义函数countLetters( )来完成字符串内的统计逻辑,函数processLetter( )封装了对象oResult的键值对构建过程。
函数printResult( )完成结果的打印。
// define global variables
var oResult = {};
function countLetters(sTextToProcess) {
var sNormalized = sTextToProcess.toLowerCase(); // this is local variable
for (var i = 0; i < sNormalized.length; i++) {
processLetter(sNormalized[i]);
}
}
function processLetter(cLetter) {
if (oResult[cLetter]) {
oResult[cLetter]++;
} else {
oResult[cLetter] = 1;
}
}
function printResult() {
var sOutput = "";
for (var prop in oResult) {
if (oResult.hasOwnProperty(prop)) {
sOutput += " '" + prop + "': " + oResult[prop] + "; ";
}
}
console.log(sOutput);
}
// test
countLetters("Hello World");
printResult(); //输出: 'h': 1; 'e': 1; 'l': 3; 'o': 2; ' ': 1; 'w': 1; 'r': 1; 'd': 1;
在此例中,我们使用了全局变量,一般而言,使用全局变量的情况有:
- 当多个函数需要共享相同的数据时,可以使用全局变量来存储这些数据。
- 当需要在不同的函数之间传递数据时,可以使用全局变量作为中介。
使用局部变量的情况:
- 当某个变量只在特定的函数内部使用时,可以使用局部变量来限制其作用范围,避免命名冲突和意外修改。
需要注意的是,过多地使用全局变量可能导致命名冲突和代码维护困难,因此应尽量避免滥用全局变量,而是优先使用局部变量。
3. 小结
本文通过一个示例,练习了JavaScript中的对象,函数和封装的概念,并辨析了全局变量和局部变量的使用场景。希望本文对你有帮助!