美文网首页
JavaScript基础 作用域

JavaScript基础 作用域

作者: 0说 | 来源:发表于2018-01-27 20:04 被阅读0次

作用域:脚本的有效范围;分为2类:全局和局部
只有函数才有局部,其他的没有 for if

全局:
1、在script标签下面的变量函数 ===>全局作用域
2、直接定义在script标签下的变量称为全局变量,函数称为全局函数
3、全局变量及函数都是window的一个属性,才能通过window.变量访问;
例:

<script>
  var a = 123;
  alert( window.a );//弹出123
  function ab(){}
  alert( window.ab );//弹出function ab(){};
<script>

局部:
一个function就是个单独的域,也就是我们所说的局部,定义在局部变量/函数叫做局部变量 局部函数

function fn(){
  var a = 10;
  alert( window.a ) ===>弹出undefined;
}
fn();

这里的a是局部的a,不是window下的,window.a访问不到,不是window下的属性,所以是undefined;

<script>
 var a = 20;
function fn(){
  var a = 10;
alert( window.a );//弹出20 访问的是window下的a
}
fn();
</script>

局部作用域里面,如果有函数产生并执行,那么在局部作用域里面会产生新的局部作用域;


全局里有多个局部,局部只可以有多个局部;全局与局部变量怎么访问;

作用域链

1、子作用域在使用变量/函数的时候首先会从自身找(当前这一层),当自身能找到应用自己的,如果找不到会向上一层找。
2、所有的儿子可以访问到各个父级(爸爸、爷爷....)



子作用域:二是一的子作用域(父子作用域)

例:

var a = 20;
function fn(){
    function x(){
       a ++;     
    }
   x();
   alert ( a ); //当层没有a会向上找,找到a = 20;  a++; a=21会返回给全局的a 
}               //弹出 21
fn();

某些时,不太确定某一个全局变量是否存在的时候,又要去使用的话,我们可以通过window.的形式,这样就不会报错,不会阻碍后面代码的执行;

例:

var a = 10;              var a = 10;
alert( b );    报错      alert(window.b)===>undefined  后面的代码会执行
alert( b );   不执行     alert(1);

当定义变量的时候,如果不加var而直接赋值的话(变量 = xxx;),无论全局还是局部相当于window.变量 = xxx的形式;

例:

一、
<script>                                         <script>
  a = 10; 相当于window.a = 10;                     function fn(){
  alert( window.a )                                    a = 0; ===>没有加var 相当于window.a
</script>                                         }
                                                  </script>

函数参数的作用域

function a( x , y ){
      alert( x );  //弹出5;
      var x = 10;
}
a( 5 , 10 );

优先处理参数

相当于

function a(  ){
      var x = 5; //这都在最前面定义的
      var y = 10;
      alert( x );  //弹出5;
      var x = 10;
}
a( );

相关文章

  • JS基础---05作用域

    JavaScript基础 1 - 作用域 1.1 作用域概述 全局作用域 局部作用域(函数作用域) 1.2 全局作...

  • 作用域链,闭包,原型链

    Javascript-基础概念总结 【作用域】javascript中的作用域可以理解为一个语句执行的环境大小,有全...

  • 技术栈

    一、HTML、CSS基础、JavaScript语法基础。 二、JavaScript语法进阶。包括:作用域和闭包、t...

  • 2020前端技术栈

    一、HTML、CSS基础、JavaScript语法基础。二、JavaScript语法进阶。包括:作用域和闭包、th...

  • JavaScript作用域学习笔记

    @(JS技巧)[JavaScript, 作用域] JavaScript作用域学习笔记 概念: 作用域就是变量与函数...

  • JavaScript基础 作用域

    作用域:脚本的有效范围;分为2类:全局和局部只有函数才有局部,其他的没有 for if 全局:1、在scrip...

  • 07-JavaScript作用域和预解析

    JavaScript作用域 JavaScript中有全局作用域和局部作用域 相同作用域内不能有同名的变量和函数 不...

  • JavaScript 作用域和作用域链

    JavaScript 作用域 作用域就是变量与函数的可访问范围。在JavaScript中,变量的作用域有全局作用域...

  • 作用域、执行环境、作用域链

    作用域,之前有介绍过,JavaScript无块级作用域,只有函数作用域,简单点说就是JavaScript的作用域就...

  • 深入学习js之——作用域链#5

    开篇 作用域是每种计算机语言最重要的基础之一,因此要想深入的学习JavaScript,作用域和作用域链就是个绕不开...

网友评论

      本文标题:JavaScript基础 作用域

      本文链接:https://www.haomeiwen.com/subject/mjhoaxtx.html