1. 程序控制流
程序控制流是指控制代码执行顺序的方式和规则,JavaScript中有三种常见的程序控制流:
1.1 顺序结构
JavaScript程序代码按照编写的顺序被依次执行的结构就是顺序结构。例如:
let a = 1
let b = 2
let c = a + b
console.log(c)
在这个例子中,代码会先执行a=1、然后b=2、最后c=a+b,而且输出结果为3。
1.2 分支结构
分支结构就是代码会根据条件来选择性执行不同的代码块。JavaScript中常见的分支结构有if语句和switch语句。例如:
let a = 1
if(a > 0){
console.log("a是正数")
}else if(a === 0){
console.log("a是零")
}else{
console.log("a是负数")
}
在这个例子中,如果a大于0,输出’a是正数’;如果a等于0,输出’a是零’,如果a小于0,输出’a是负数’。
1.3 循环结构
循环结构可以重复执行一段代码,JavaScript中常见的循环结构有for循环、while循环和do…while循环。例如:
for(let i = 0; i < 10; i++){
console.log(i)
}
在这个例子中,代码会从0开始循环执行到小于10,每次循环输出i的值。
2. 函数
函数是一段可以被重复调用的JavaScript代码块,通常用于执行特定的任务。函数可以接受参数,也可以返回值,是JavaScript中重要的组成部分。
2.1 函数的定义和调用
函数的定义通常使用function关键字,然后指定函数名和函数体。例如:
function add(a, b){
return a + b
}
在这个例子中,函数名是add,接受两个参数a和b,然后返回a和b相加的结果。
函数的调用则是使用函数名和参数列表,例如:
let result = add(1, 2)
console.log(result)
在这个例子中,调用add函数并传入参数1和2,然后将结果保存在result变量中,并输出结果3。
2.2 函数的参数
函数可以接收多个参数,参数之间使用逗号进行分隔,例如:
function sayHello(name, age){
console.log(`你好,我是${name},今年${age}岁`)
}
sayHello("Tom", 18)
在这个例子中,函数接收两个参数name和age,然后使用console.log输出字符串,函数调用时传入Tom和18作为参数。
函数的参数可以指定默认值,这在函数调用时如果没有传入对应的参数时,就会使用默认值。例如:
function sayHello(name="Mike", age=20){
console.log(`你好,我是${name},今年${age}岁`)
}
sayHello()
在这个例子中,函数的两个参数都指定了默认值,当函数没有传入参数时就会使用默认值,输出字符串’你好,我是Mike,今年20岁’。
2.3 函数的返回值
函数可以通过return语句返回一个值,例如:
function add(a, b){
return a + b
}
let result = add(1, 2)
console.log(result)
在这个例子中,函数接收两个参数a和b,返回a和b的和,然后用result保存函数的返回值3。
2.4 函数的作用域
JavaScript中的函数有自己的作用域,函数中声明的变量只在函数内部可见,在函数外部不会产生冲突。例如:
let a = 1
function test(){
let a = 2
console.log(a)
}
test()
console.log(a)
在这个例子中,全局变量a的值为1,test函数内部定义了一个同名变量a,并且值为2,在调用test函数时输出了2,而在函数外部输出全局变量a的值为1。
2.5 函数的闭包
函数的内部函数可以访问外部函数的变量,这种机制称为闭包。例如:
function outer(){
let a = 1
function inner(){
console.log(a)
}
return inner
}
let result = outer()
result()
在这个例子中,outer函数中定义了一个内部函数inner,并且inner可以访问外部变量a的值,在外部函数outer返回内部函数inner时,使用result保存返回值,然后再调用result时,就会输出1。
函数作为一种重要的程序控制流的组成部分,具有广泛的应用场景,并且是JavaScript中的重要组成部分,需要我们深入了解和灵活运用。