当前位置:首页 > 问答库 > Java基础知识 > 详情

Java作用域

来源:千锋教育

发布:Java培训

2022-01-20

Java基础知识 分类问答库

推荐答案

      什么是作用域?

      JS中的变量或者函数能够被访问到的代码空间(变量或者函数有效的范围)。

      JavaScript中的作用域:全局作用域; 局部作用域;

      当一个变量在函数最外层定义时,变量就在全局作用域中,在一个函数内部定义一个变量,这个变量就在局部变量中。

      全局作用域

      最外层函数或者在其外部定义的变量具有全局作用域。

      var a = 10; //全局变量

      function foo(){ //全局函数

      console.log(a);

      }

      这个变量a就在全局作用域中,可以说成是个全局变量,这个a可以子啊认可地方访问或修改。

      还有一点,window对象的属性和方法具有全局作用域

      Eg:

      alert("dddddd");

      window.alert("aaaa");

      var obj = {

      name:"john",

      age:20,

      sayHello:function(x){

      console.log(x);//输出undefined//第二次输出1//第三次输出aaa(要问我为什么会输出三次,因为声明提升的问题,请自行百度)

      }

      };

      console.log(obj.name);//输出jogn

      obj.sayHello();

      console.log(obj.sayHello(1))//输出undefined

      obj.sayHello("aaaaa");

      在一个函数内部声明一个变量不用 var来定义,这个变量具有全局作用域

      function foo(){

      b = 20;

      var a = 10;

      }

      foo();

      console.log(b);

      console.log(a);//a会报错,因为a 是一个局部变量

      局部作用域

      定义在函数中的变量就在局部作用域中。并且函数在每次调用时都有一个不同的作用域。这意味着同名变量可以用在不同的函数中。因为这些变量绑定在不同的函数中,拥有不同作用域,彼此之间不能访问。(在一个函数颞部定义的函数或者用var定义的变量具有局部作用域)

      Eg:

      在ES5中函数去区分全局和局部的唯一的代码块

      if(true){

      var a = 10;

      }

      for(var i =0; i<=0; i++){

      var b = 10;

      }

      console.log(a,b);//a,b都是输出10

      函数的形参具有局部作用域,是局部变量

      function foo(x){

      console.log(x);//输出undefined

      }

      foo();

      console.log(x);//报错

      补充一点块语句

      块级声明包括if和switch,以及for和while循环,和函数不同,它们不会创建新的作用域。在块级声明中定义的变量从属于该块所在的作用域。

      Eg:

      if(true){

      Var name = “join”;

      }

      Console.log(name)//输出join

      Es6中引用了let,const关键字,这些关键字可以代替var,但是和var不同的是,let和const具有块级作用域,也就是说在块级声明中创建并使用时,是具有全局作用域的

      在全局作用域声明的变量可以称为全局变量,同理还有全局变量,和函数形参,他们所站的比重是局部变量>函数形参>全局变量

更多问题在线答疑

导师线上坐镇
解答个性化学习难题

立即提问

上一篇

Java中io流详解

相关问题

更多 >>
javascript和java有什么区别 学习java的步骤是什么 java怎么学才能学好 Java培训班的课程一般都学习什么内容 学习Java有哪些技巧吗 java程序员常用到的技术有哪些
热门问题
Java基础知识 Java培训机构 Java培训费用 Java培训时间 java培训课程 Java培训就业 零基础学Java java薪资待遇 java学习路线

全国咨询热线400-811-9990