千锋教育-做有情怀、有良心、有品质的职业教育机构

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

Java作用域

发布:Java培训 2022-01-20 15:30

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具有块级作用域,也就是说在块级声明中创建并使用时,是具有全局作用域的

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

最新问答资讯

01 unity用什么编程语言?unity学习难度大吗

学习 unity 语言
6020 人关注

02 python容易学吗?学好python有什么好处?

学习 python 工作 培训
5389 人关注

03 html是什么语言?html学习难吗?

学习 html 语言 可以
5062 人关注

04 c语言难学吗?c语言学好要多久?

语言 技术 学习
4733 人关注

06 学好平面设计要多久?报速成班靠谱吗?

平面 设计 学习 时间
4238 人关注

相关问题

计算机前端和后端区别,到底该学哪一个?

互联网行业的发展速度很快,有关市场上对于it行业的人才需求量越...

java和php的区别是什么?哪一个更难一些?

有很多零基础的小白想要去学习编程技术,那么可以考虑一下java和...

java与java script的区别有哪些?

相信大多数同学对java、java script都不会陌生,二者都是编程语...

java中什么是继承?

继承的特点:只需明确一点,java只支持单继承,不支持多继承,但...

java byte取值范围是什么?

同学您好,java byte取值范围是什么?针对这个问题可以看看下面的...

javascript和java有什么区别

1)基于对象和面向对象:Java是一种真正的面向对象的语言,即使是...

测一测
你知道多少IT梗