函数定义形参 ,也是局部变量_觅花彩碟的博客-爱代码爱编程
<script>
//函数定义形参 ,也是局部变量
function foo(x){
var tmp=3;
function bar(y){
alert(x+y+tmp);
}
bar(10)
}
foo(2)
//补充: document.write('中国抗疫') 在页面中输出文字
// document.write('中国抗疫')
function fn2(){
function getSum(x,y){
// 声明两个形参
return x+y
}
var b=getSum(1,6)
}
fn2()
getSum(2,3)//报错
</script>
2、块级作用域
作用域有三种:全局作用域 函数作用域 块级作用域
es6中新提出的块级作用域 ,let const有块级作用域 | var没有
什么是块级作用域
就是 js中凡是带有{ } 花括号内部就是代码块 也即块级作用域
<script>
// 凡是{ }括住的区域就是块级作用域
// es6 赋予let const块级作用域 var 没有块级作用域 但 函数作用域
let num = 9
if(num > 0){
// 代码块 ----块级作用域
let num1 = 100 //局部变量
console.log(num1)
var num3 = 23 //全局变量
console.log(num3)
}
console.log(num1)//报错 let有块级作用域 num1局部变量
console.log(num3) //var没有块级作用域
for(var i = 1 ;i <= 9 ; i++){
console.log(i)
}
console.log('var声明:',i)//10
console.log('***************') //10
//for 循环变量一般用let去声明
for(let j = 1 ;j <= 9 ; j++){
console.log(j) //局部变量
}
console.log(j) //报错
</script>
对比let var 的区别与练习
var 和 let关键字的区别有不同
1、相同点:
都是用来声明变量的关键字
2、不同点
(1)var可以重复声明 let只能声明一次
(2)var声明的变量有变量提升 let没有变量提升
(3)var有函数作用域 let有块级作用
<script>
/*
var 和 let关键字的区别有不同
1、相同点:
都是用来声明变量的关键字
2、不同点
(1)var可以重复声明 let只能声明一次
(2)var声明的变量有变量提升 let没有变量提升
(3)var有函数作用域 let有块级作用域
*/
console.log(num) //undefined
var num = 9
// console.log(num1) //报错
let num1=9
function fn1(){
var num =9 ; //局部变量
let num1 =8;//局部变量
}
if( 9 > 7){
// 块级作用域
let num5= 9000 //局部变量
var num4 = 8 //全局变量
}
console.log(num5) //报错
console.log(num4) //8
// 注意:for循环里面 如果不想让循环体的内容与外界联系 用let声明
</script>