code with freeCodeCamp。复习一下自己学习到的知识点~
const character = "#";
const count = 8;
const rows = [];
let inverted = true;
function padRow(rowNumber, rowCount) {
return " ".repeat(rowCount - rowNumber) + character.repeat(2 * rowNumber - 1) + " ".repeat(rowCount - rowNumber);
}
// TODO:使用不同类型的循环
for (let i = 1; i <= count; i++) {
if (inverted) {
rows.unshift(padRow(i, count));
} else {
rows.push(padRow(i, count));
}
}
/*while (rows.length < count) {
rows.push(padRow(rows.length + 1, count));
}*/
/*for (let i = count; i > 0; i--) {
rows.push(padRow(i, count));
}*/
let result = ""
for (const row of rows) {
result = result + row + "\n";
}
console.log(result);
变量声明:let、var、const
尽量避免使用var
var (传统方式,现在较少使用)
函数作用域:在声明它的整个函数内都可用。
会变量提升:声明会被提升到函数顶部,但赋值不会。
可以重复声明:不会报错,这可能是潜在的bug来源。
let
块级作用域:只在 {} 代码块内有效。
不会变量提升:在声明前使用会报错(暂时性死区)。
不可重复声明:在同一作用域内不能重复声明。
const
块级作用域:与 let 相同。
必须初始化:声明时必须赋值。
不可重新赋值:对于基本数据类型(数字、字符串、布尔等),值不能改变。对于对象和数组,引用地址不能改变,但对象内部的属性或数组的元素可以修改。
数组:一种将一组数据有序的存储在单个变量名下的优雅方式。
使用 [length] 属性获取数组的长度(数组中有多少项元素)。
arr.length;
| 方法 | 作用 | 修改原数组? | 返回值 |
|---|---|---|---|
| push() | 末尾添加 | ✅ | 新长度 |
| unshift() | 开头添加 | ✅ | 新长度 |
| pop() | 移除末尾元素 | ✅ | 被移除的元素 |
| shift() | 移除开头元素 | ✅ | 被移除的元素 |
| slice() | 提取部分元素 | ❌ | 新数组 |
| splice() | 删除/添加元素 | ✅ | 被删除的元素组成的数组 |
循环
for 循环: 最常用的循环,指定初始值、条件和增量。
// 循环体
}
while 循环 : 只要条件为真,就继续循环。
// 循环体
}
for...of 循环: 用于遍历可迭代对象(如数组、字符串)的元素值。
result = result + row + "\n";
}
JS基础知识——创建成绩统计册
回顾了JavaScript基础知识,如函数、变量、条件
模板字面量是用反引号(`)分隔的字面量,允许多行字符串、带嵌入表达式的字符串插值和一种叫带标签的模板的特殊结构。(使用 ${expression} 语法在字符串中嵌入变量或表达式)
let sum = 0;
for (const score of scores) {
sum += score;
}
return sum / scores.length;
}
function getGrade(score) {
if (score === 100) {
return "A++";
} else if (score >= 90) {
return "A";
} else if (score >= 80) {
return "B";
} else if (score >= 70) {
return "C";
} else if (score >= 60) {
return "D";
} else {
return "F";
}
}
function hasPassingGrade(score) {
return getGrade(score) !== "F";
}
function studentMsg(totalScores, studentScore) {
const average = getAverage(totalScores);
const grade = getGrade(studentScore);
const passed = hasPassingGrade(studentScore);
if (passed) {
return `Class average: ${average}. Your grade: ${grade}. You passed the course.`;
} else {
return `Class average: ${average}. Your grade: ${grade}. You failed the course.`;
}
}
console.log(studentMsg([92, 88, 12, 77, 57, 100, 67, 38, 97, 89], 37));