首页 > Web开发 > 详细

JS基础--函数作用域

时间:2020-12-13 20:26:44      阅读:25      评论:0      收藏:0      [点我收藏+]

嗨!我是前端小M~~

作用域

作用(有效)域(区域,范围)变量生效的范围
  • 全局作用域 :书写位置在全局,没有被任何函数{ }括起来,任何地方都能被访问
  • 函数作用域:在函数声明时产生函数作用域,全局作用下无法访问函数内部变量,函数作用域可以访问全局变量,若全局函数中存在与函数作用域相同名字的变量,就近原则
  • 块级{ }作用域:块级作用域 let const { }暂时性死区,作用域外访问不到
    for (let i = 0; i < 3; i++) {                      for (var i = 0; i < 3; i++) {
       console.log(i);    // 0 1 2                      console.log(i);   //0 1 2
    }                                                   }
    console.log(i);    //  i is not defined               console.log(i);  //3
  • eval( )忽略不计

函数提升

 

1)声明式函数存在提升(只提升声明)
console.log(a); //Cannot access ‘a‘ before initialization    console.log(a);
let a = 5;                                                    var a = 5;
2)函数是一等公民,函数提升在变量提升之前,出现重名,被覆盖 无效
let test = 5;                                        function test(){
function test(){                                     console.log(`heihei`);
    console.log(`heihei`);                           }
}                                                    let test = 5;
console.log(test);       //5       ====变量提升=====>  console.log(test); //5
console.log(typeof test);//num                        console.log(typeof test);//num
test();                 //未声明                       5();//???
3) 变量使用前一定要声明,否则为全局变量

在函数中获取另一个函数的值

1.局部变量赋值给全局
let b = 2;        //被a赋值为1
let fn1 = function (){
   let a = 1;   //局部
   b=a;     //局部变量赋值给全局
}
let fn2 = function (){
    console.log(b);  //1
}
fn1();
fn2();
2.以形参的形式传递
let fn1 = function () {
    let a = 1;
    fn2(a);
}
let fn2 = function (x) {
    console.log(x);  //1
}
fn1();
3.以返回值的形式传递
let fn1 = function () {
    let a = 1;
    return a;  //1
}
let result = fn1();//1
let fn2 = function () {
    console.log(result);//1
}
fn2();

  

 

 

 

 

JS基础--函数作用域

原文:https://www.cnblogs.com/trail0226/p/14128988.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!