Javascript基础知识——创建金字塔

35 阅读2分钟

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));