js carsh course|青训营笔记

54 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天。

本文是续前两天的的js carsh course学习笔记。笔记1笔记2

控制结构

if

var name = 'jia'
if (name == 'jiajia') {
    document.write('hello,jiajia')
} else if (name == 'xiaojia') {
    document.write('hello,xiaojia')
} else {
    document.write('stranger')
}

while循环

var a = 18
while (a <= 20) {
  a++
  console.log(a)
}
// 输出 21  
// 共循环 3 次
// 先判断后循环

dowhile循环

var a = 18
do {
  a++
  console.log(a)
} while (a <= 20)
// 输出 21  
// 共循环 3 次
// 先循环后判断

当初始变量在条件以内,while和dowhile一样

当初始变量在条件以内,while不执行循环,dowhile循环执行一次

作用域

建议用let和const

因为作用域不同会有下方两种结果

code.juejin.cn/pen/7193254…

code.juejin.cn/pen/7193921…

for循环

var name = 'red'
var age = '18'
for (let i = 0; i<=5; i++) {
  age++
  console.log(age)
}
// 即对age进行6次+1循环
// 最终输出24
// 一整次循环完成后会进行i++
// 代码执行顺序:判断i是否小于等于5=>满足进行age++并将age打印到控制台=>进行i++(再进行此步骤直到i不满足条件停止循环)

循环的过程得到的iage值如下:(只要i <= 5,就会进入循环,执行age++。i的初始值为0 ,满足i <= 5的有0,1,2,3,4,5;即共进行6次循环)

Switch语句(条件分支语句)

var name = 'bell'
switch (name) {
  case 'red':
    console.log('hello,red')
    break
  case 'blue':
    console.log('hello,blue')
    break
  default:
    console.log('A stranger')
}
// switch () 选择一个变量
// case   :   表示进行一次选择(或者叫判断),当switch选择的变量与此处要判断的值相等时,执行csae:后的语句,break表示此次选择结束,跳出该语句进行后续代码的执行。
// default: 是在所有case选择都不满足时进行的,会执行default:后的语句

当switch中case后没有进行break结束时,会得到下面结果:

code.juejin.cn/pen/7193945…

others

var name = 'red'
var age = 22
var allowed = (age >= 18) ? 'yes':'no'
console.log(allowed)
// var allowed = (age >= 18) ? 'yes':'no'
// 判断age是否满足条件,如果满足条件,把‘yes’赋值给allowed,否则将‘no’赋值给allowed

对象(object)

  1. 新建一个对象

var obj = New Object()--- 方法一

var obj ={} ---方法二

{键:值} (键:值)叫做键值对

一个对象中放置多个键值对时,各个键值对之间用逗号隔开

  1. 对象的操作(对象内键值对的操作)
  • 增:向对象内增加一个键值对(两种方法)
  • 删:使用delete关键字(两种方法)
  • 改:与增加键值对的方法一样(对象不重名特点)
  • 查:访问对象内某一个键的值

数组

  1. 新建一个数组

var a = new Array()---方法一

var a = [] ---方法二

数组可以看作是一个对象

一个数组并不一定每个位置都有内容

常用的遍历数组方式:for循环

var a = new Array();
var b = [];
// 给a数组的第0个位置开始添加一个内容
a[0] = 'dog';
// 给a数组的第1个位置开始添加一个内容
a[1] = 'cat';
// 给a数组的第5位开始添加一个内容,并且查看中间未添加的内容会输出什么?会是空格,输出a[2]会得到(undefined)  因此一个数组并不一定每个位置都有内容
a[5] = 'tiger';
console.log(a)

b = ['dog', 'cat', 'tiger'];
console.log(b);

// 取出数组中每一个值的方法
// 使用for循环  i的初始值定义为0(因为数组是从0开始计数的)
for (var i = 0; i < b.length; i++) {
console.log(b[i])
}

for in循环

ES5中加入了更方便的遍历方式:for in循环

var a = new Array();
a[0] = 'dog';
a[1] = 'cat';
a[5] = 'tiger';
// 给一个i,让i在a的范围内进行计数(也就是i++)
for (let i in a) {
	console.log(a[i])
}
// 未被定义的值不会被打印在控制台


// 使用for循环遍历数组a的时候会出现undefined
var a = new Array();
a[0] = 'dog';
a[1] = 'cat';
a[5] = 'tiger';
for (var i = 0; i < a.length; i++) {
console.log(a[i])
}

循环的过程如下:

var b = []
b = ['dog', 'cat', 'tiger'];
b.push('sheep')
console.log(b)
// 会在b数组末尾增加'sheep'(第四个位置,第三项)

// 向数组第一位添加元素  b.unshift('sheep')
var b = []
b = ['dog', 'cat', 'tiger'];
b.pop()
console.log(b)
// 删除第一个元素用 b.shift()
var b = []
b = ['dog', 'cat', 'tiger'];
b.reverse()
console.log(b)

函数

  1. 函数定义阶段(下面列举一个名为fn的函数的定义阶段)
    function fn() {
    装在盒子里的代码
    }

    小括号中的内容叫做形参(一个只能在函数内部使用的特殊变量)

  2. 函数的调用阶段
    函数名()

    其中,函数名指要调用的函数的名称 小括号中的内容叫做实参(即给形参从左到右赋值)
    函数的返回值:给函数调用添加一个结果(使用return 结果

// 定义一个变量
let a = 1
// 定义一个求和函数
function add(x) {
  a += x
}
// 调用函数
add(2)
// 此处执行了a=a+x=1+2=3
console.log(a)

制作一个求和函数

function add( ) {
let sum = 0
// 让i遍历每一个j   arguments.length指变量的个数(第一行add()中数据的个数)
  for (let i = 0, j = arguments.length; i < j; i++) {
    sum += arguments[i]
  }
  return sum
}

let sum = add()
console.log(sum)

闭包

回调函数是向方法里传入一个函数,让这个方法使用这个函数

闭包是这个函数返回一个函数

制造一个加法器

function makeAdder(a) {
  return function(b) {
    return a + b
  }
}

var x = makeAdder(5)
// x是一个方法,a是5
var sum = x(6)   //此处的x变成了方法【function(b) {
    return a + b】
console.log(sum)  //11