精华内容
下载资源
问答
  • <!DOCTYPE html> <... <head> ...meta charset="UTF-8">...javaScript中var变量的作用域</title> </head> <body> <h1>javaScript中var变量的作用域</h1...

     

     

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>javaScript中var变量的作用域</title>
    </head>
    <body>
    <h1>javaScript中var变量的作用域</h1>
    </body>
    <script type="text/javascript">
    //后面有时间再写let的知识点,今天先写var的知识点
    //案例1
    function fn1(){
    	if(true){
    		//语句块中声明的变量将成为语句块所在函数的局部变量
    		//hometown变量的作用域是声明了hometown的这个函数,而不是hometown所在的if语句块
    		var hometown = '江西省赣州市于都县';
    		console.log(hometown); //江西省赣州市于都县
    	}
    	//hometown变量的作用域是在整个函数
    		console.log(hometown); //江西省赣州市于都县
    }
    fn1();
    
    //案例2
    //在函数之外声明的变量,叫做全局变量
    if(true){
    	//age变量可以被当前文档中的任何其他代码所访问
    	//虽然age变量是写在if语句块中的,但是此时age变量的作用域等同于全局变量
    	var age = 6; 
    	console.log(age); //6
    }
    //if语句块之外,仍然可以访问到age变量
    	console.log(age); //6
    	
    //案例3
    function fn2(){
    	for (var f = 0; f < 3; f++) {
    		//*******0
    		//*******1
    		//*******2
    		console.log('*******' + f);
    	}
    //for语句块之外,仍然可以访问到f变量
    	console.log('--------' + f);//--------3
    }
    fn2();
    
    //案例4
    for (var h = 0; h < 2; h++) {
    	//*******0
    	//*******1
    	console.log('*******' + h);
    }
    //for语句块之外,仍然可以访问到h变量
    	console.log('--------' + h); //--------2
    </script>
    
    <script type="text/javascript">
    //if语句块之外,仍然可以访问到age变量
    console.log(age); //6
    </script>
    </html>

     

    展开全文
  • 一、迷思!由一段代码引发的疑惑 请看如下代码: 代码如下: for... 如果JavaScript中用var声明的变量可视为局部变量,那么能访问到这个变量的作用域就是这个变量的局部作用域。如上例,在console.log行处,依然有j、k
  •  javascript的变量作用域,与平时使用的类C语言不同,例如C#的代码: static void Main(string[] args) { if(true) { int number=10; } Console.WriteLine(number); }  这段代码进行编译,是无法通过的,...
  • var作用域

    2018-05-15 12:03:04
    一般来讲,在函数内部(local variable)js初始化变量加var的为局部变量不加的时候表现为全局变量(它们都给window对象添加了一个属性)。例如: function foo() { t=11 } foo(); console.log(t);...

    平常我们在使用js 的时候一般使用var来声明变量。 一般来讲,在函数内部(local variable)中,js初始化变量加var的为局部变量不加的时候表现为全局变量(它们都给window对象添加了一个属性)。

    例如:

     function foo() {
          t=11
            }
           foo();
           console.log(t); //11
          console.log("t" in window); //true

    可见,在函数中不用var声明表现为全局变量,可以对这个属性进行修改。

     function foo(){
      var t=11;
      }
        foo();
       //console.log(t);  //后台输出:is not defined
      console.log("t" in window); //fase
    • 1

    可见这里的t为局部变量,函数当中声明的变量只在函数作用域当中生效,一旦离开了作用域调用就会报错。

    我们再看几个例子。

      var b=2;
     function foo1() {
          b=4;
     console.log(b);   //4
     }
     foo1();
     console.log(b);   //4

    在这里首先定义了 一个变量b,然后在函数内部修改了b的值,因为函数内部的b为全局变量,修改了函数外的变量b。(函数内的b:“俺先在foo里面找找看有没有和俺相同名字的兄台,有就把它赋值为4.很不幸的是foo里木有,于是俺往外找,找呀找,终于在最外层找到一个b,嘿嘿,先把它干了再说~”)

    var b=2;
     function foo1() {
     var  b=4;
     console.log(b);   //4
     }
     foo1();
     console.log(b);   //2

    这里我们在函数内部的b前面加上var使它为局部变量,执行后全局变量b就没有被改变。

    我们都知道在函数最外部,我们用var声明一个变量为全局变量,但是如果不加var会出现啥子结果捏?

    例子:

    t=11;
    console.log(t);  //11
    console.log("t" in window); //true

    结果也为全局变量(window对象的属性)。

    有人会想:那我只要加上var关键字就能让它只在当前作用域生效咯?

    ——不一定

    注意:JavaScript没有块级作用域. 例如.

     function foo() {
     for(var i=0;i<10;i++){
     console.log("for内"+i);        //0,1,2,3,4,5,6,7,8,9
     }
     console.log("函数内for外"+i);    //10
     }
     foo();

    这里在语句内定义一个变量i,但i的表现实则是在函数内定义的。所以我们能够在语句外函数内去引用变量。 那么我们如何使块语句中声明的变量只作用在块语句内呢?

     function foo() {
     (function() {
     for(var i=0;i<10;i++){
     console.log("for内"+i);    //0~9
     }
     })();
     console.log("函数内for外"+i);   //报错
    } 
    foo();

    但是我们不建议过多地使用全局变量,因为全局变量过多很容易出现变量污染的问题,出错的时候也不容易排除。

    展开全文
  • js中var作用域和输出问题

    千次阅读 2017-03-03 14:59:21
    1、var声明的变量是函数作用域; 2、var声明变量会提前到文件最开始的地方,但是初始化还是在语句位置。 示例代码: var a; console.log(a); //undefined a=1; console.log(b); //报错 b is not defined b=2; ...

    关于js 中var的问题:

    1、var声明的变量是函数作用域;

    2、var声明变量会提前到文件最开始的地方,但是初始化还是在语句位置。

    示例代码:

    var a;
    console.log(a);  //undefined
    a=1;
    
    console.log(b);  //报错 b is not defined
    b=2;
    
    console.log(c);  //undefined
    var c=3;
    
    var d=4;
    console.log(d);  //4







    展开全文
  • 作用域 全局作用域 局部作用域 作用域链 执行上下文 活动对象 闭包 闭包优化 JavaScript中出现了一个以前没学过的概念——闭包。何为闭包?从表面理解即封闭的包,与作用域有关。所以,说闭包以前先说说作用域。 ...
  • 1、块级作用域 ...JS中还有全局作用域和函数作用域。 <script type="text/javascript"> { var a = 1; console.log(a); // 1 } console.log(a); // 1 // 可见,通过var定义的变量可以...

    1、块级作用域

    块级作用域是ES6新增的,块作用域由 { } 包括,if语句和for语句里面的{ }也属于块作用域。JS中还有全局作用域和函数作用域。

    <script type="text/javascript">
    	{
    		var a = 1;
    		console.log(a); // 1
    	}
    	console.log(a); // 1
    	// 可见,通过var定义的变量可以跨块作用域访问到。
    
    	(function A() {
    		var b = 2;
    		console.log(b); // 2
    	})();
    	// console.log(b); // 报错,
    	// 可见,通过var定义的变量不能跨函数作用域访问到
    
    	if(true) {
    		var c = 3;
    	}
    	console.log(c); // 3
    	for(var i = 0; i < 4; i++) {
    		var d = 5;
    	};
    	console.log(i);	// 4   (循环结束i已经是4,所以此处i为4)
    	console.log(d); // 5
    	// if语句和for语句中用var定义的变量可以在外面访问到,
    	// 可见,if语句和for语句属于块作用域,不属于函数作用域。
    </script>
    

    2、var、let、const的区别

    • var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问。
    • let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。
    • const用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改。
    <script type="text/javascript">
    	// 块作用域
    	{
    		var a = 1;
    		let b = 2;
    		const c = 3;
    		// c = 4; // 报错
    		var aa;
    		let bb;
    		// const cc; // 报错
    		console.log(a); // 1
    		console.log(b); // 2
    		console.log(c); // 3
    		console.log(aa); // undefined
    		console.log(bb); // undefined
    	}
    	console.log(a); // 1
    	// console.log(b); // 报错
    	// console.log(c); // 报错
    
    	// 函数作用域
    	(function A() {
    		var d = 5;
    		let e = 6;
    		const f = 7;
    		console.log(d); // 5
    		console.log(e); // 6  (在同一个{ }中,也属于同一个块,可以正常访问到)
    		console.log(f); // 7  (在同一个{ }中,也属于同一个块,可以正常访问到)
    
    	})();
    	// console.log(d); // 报错
    	// console.log(e); // 报错
    	// console.log(f); // 报错
    </script>

     

    展开全文
  • JS中的块级作用域var、let、const三者的区别

    万次阅读 多人点赞 2017-10-21 12:22:35
    首先,ECMAScript和JavaScript关系: ECMAScript是一个国际通过的标准化脚本语言。JavaScript由ECMAScript和DOM、BOM三者组成。...1. 块作用域{ }JS中作用域有:全局作用域、函数作用域。没有块作用域的概念。ECM
  • 先上三段说明作用域的代码 //==========例1========== var scope='global'; function fn(){ alert(scope); var scope='local'; alert(scope); } fn(); //输出结果? alert(scope);//...
  • 3.js中只有function能产生局部作用域 4.js里函数的作用域,又叫词法作用域 5.JavaScript 变量生命周期在它声明时初始化。 6.局部变量在函数执行完毕后销毁,全局变量在页面关闭后销毁。 var a = 123; console....
  • 1. 在同一作用域中JavaScript是允许变量的重复定义,并且后一个定义将覆盖前一个定义。 2. 函数内部如果不加关键字var而定义的变量,默认为全局变量。 var scope="global"; function t(){ console.log(scope); ...
  • 我们通过一些例子来帮助我们理解js中作用域。 alert(a); var a = 1; 如果对作用域一点不了解的同学可能会说 alert的是1或者报错;但实际上是undefined; 说到这里,我们首先说一下js逐行解析代码之前...
  • javascript中作用域

    2021-05-11 15:09:43
    在script标签或一个独立js文件定义的就是全局作用域。 二、局部作用域 1、函数作用域 写在函数内部的都是局部作用域,只能在函数内部访问。 不同函数之间不能访问对方的变量。 2、块级作用域 块级作用...
  • Js中作用域作用域链 前言 阅读本文,请先阅读:Js中的函数相关:创建函数的三种方式、函数的形参和实参、返回值、return、break、continue的区别、重载和arguments、匿名函数、回调函数 阅读本文,请千万...
  • 而在javascript中,变量的作用域是按函数来划分的——变量在某个函数范围内有效。比如: 代码如下: var f = false; if(true) { var f = true; } //此时f位于if内,也就是块内,等价于还是全局范围内 alert(f)...
  • 在一些类似c语言的编程语言,花括号内的每一段代码都具有各自的作用域,而且变量在声明他们的代码段之外是不可见的,我们称为块级作用域(block scope),而javascript中没有块级作用域。取而代之的javascript使用...
  • JavaScript中作用域

    2019-07-09 17:30:50
    JavaScript中作用域链 在C/C++和Java等大型语言,存在作用域这样的概念。通常,一对大括号就能创造一个作用域,同一个作用域内不能有两个名字相同的变量,变量也不能在自己所属的作用域之外调用,除非有特殊处理...
  • js ,定义的var变量其实是有作用域的,不同函数内部的同名变量互相独立,互不影响。 例如: + function sum() { var x = 1; x = x+1; } function sum1() { var x=3; } 在例子,两个方法内的x的作用域只在...
  • JavaScript中,变量的作用域有:1.全局作用域 在代码任何地方都能访问到的对象拥有全局作用域,一般来说以下几种情形拥有全局作用域: 2.局部作用域 和全局作用域相反,局部作用域一般只在固定的代码片段内可...
  • JavaScript(es6前)作用域有两种: 全局作用域 局部作用域(函数作用域) 1.2 全局作用域 作用于所有代码执行的环境 (整个 script 标签内部)或者一个独立的 js 文件。 1.3 局部作用域 作用于函数内的代码...
  • JS中作用域

    2020-12-03 07:23:17
    js中数据的声明方式有两种: 1、用var声明,例如:var num = 10; 2、直接声明,例如:num = 10; 两种声明方式在某些情况下是有区别的: var data = 10; function fn01(){ var data = 100; function fn02(){ ...
  • javascript中作用域(scope)和上下文(context)是这门语言的独到之处,这部分归功于他们带来的灵活性。每个函数有不同的变量上下文和作用域。这些概念是javascript中一些强大的设计模式的后盾。然而这也给开发人员...
  • 深入理解JavaScript中作用域作用域链和闭包

    万次阅读 多人点赞 2018-05-14 17:00:19
    作用域先来谈谈变量的作用域 变量的作用域无非就是两种:全局变量和局部变量。 全局作用域: 最外层函数定义的变量拥有全局作用域,即对任何内部函数来说,都是可以访问的:&lt;script&gt; var outerVar...
  • python和javascript无块级作用域,最小范围是函数 java 有块级作用域 for i in range(3): num = 1 print("块级作用域") print(i) print(num)
  • 初学js时一直对js作用域作用域链、闭包等问题感到很模糊,不能很好理解。学习js肯定要学习作用域js作用域和其他主流语言的作用域还是存在很大区别。1、函数作用域:先看一段代码:var str="global"...
  • 如果对于作用域,词法作用域你还不是很清楚,那么你可就要好好读读这篇文章了,它可是理解闭包的关键! 作用域是什么? 理解作用域 为了便于理解,笔者使用对话的方式进行解释 引擎:负责js程序的编译以及执行过程 ...
  • JS中var关键字声明的变量的作用域

    千次阅读 2018-01-13 09:03:28
    var关键字声明变量,无论声明在何处,都会被视为声明在函数的最顶部(不在函数内即在全局作用域的最顶部)。 function aa() { if(bool) { var test = 'hello man'; } else { console.log(test); } }  ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 151,867
精华内容 60,746
关键字:

js中var的作用域