js基础第一天 (全局变量,局部变量)

前言:今天我把变量这块内容单独放出来,是我觉的这也是个重点,我很早就知道变量这个东东,可惜一直半懂不懂的,每次出现复杂的写法我就蒙圈了,今天我利用的好长时间把这块内容弄明白。

初学者可以看看我下面的案例和详细解释,你们一定会恍然大悟,我今天就是这样的感觉。虽然每天进度很慢,但是每天都有收获,这就是积累成多。

现在感觉每天的时间不够用,时间过的超快。今天过的都不知道是星期几了。

声明全局变量

1.最外层执行环境下声明的变量是全局变量

2.不用var声明的变量是全局变量

全局变量特点:任何作用域下都可以访问变量中的值。

<script>
   text=5  //全局变量
   var b=a //全局变量
   function a(){
        a=3 //全局变量
   }
</script>  

声明局部变量

1、函数中声明的变量是局部变量

2、函数中的形参是局部变量

局部变量特定:函数执行后,函数生命周期结束。所以函数中的局部变量都会被系统删除,所以局部变量在函数外是访问不到的,除非使用return

<script>
   vara=123 //局部变量
</script>

全局、局部变量案例分析

function show(){
    var a=b=c=10;
}
show()
console.log(b,c);
console.log(a);  //结果是a报错,b,c=10   //看到这个案例的同学注意以上说的全局变量的特点

详细解释:因为a是使用var声明的是局部变量,函数外访问不到,而且函数外面也没有声明a,所以报错。而b,c 没用var声明,是全局变量,所以函数外可以访问到。

  var a = 10;
   function test(){
     a = 100;
     alert(a);
     alert(this.a);
     var a;
    alert(a)
   }
   test()
 //结果 100 10 100
详细解释:js在执行前会对整本文件的声明部分做完整分析,从而确定变量的作用域,所以在函数test执行前。
1、由于第6行声明了局部变量,所以函数内部的a都指向已经声明的局部变量,所以第4行输出100.
2、第5行输出this.a,我们都知道函数内部的this指针指向的是函数的调用者,在这里函数test被全局对象调用,所以this指向全局对象window,所以this.a=window.a,一开始生命了全局变量a=10,所以第5行结果为10.
3、第七行输出结果为100,因为局部变量a在第3行已经被赋值了100,所以直接输出局部变量a的值。
var a = 100;
function test(){
  console.log(a);
  var a= 10;
  console.log(a);
}
text()//undefinde 10

详细解释

1、在这个函数中,执行第3行前,可以认为已经声明了变量a,但是并没有定义(这里说的赋值),所以第3行结果是空

2、执行第4行a=10后,变量a的值为10.所以第5行输出结果是10.

var a =100;
function test(){
 alert(a)
  a=10
 alert(a)
}
test();
alert(a) //100 10 10

详细解释

1、我们都知道在函数内部,一般用var声明的为局部变量,没用var声明的一般为全局变量

2、在text函数内,a=10声明了一个全局变量,所以第3行的a应该输出全局变量的值,而在函数执行之前已经声明过一个全局变量并赋值100,所以这里第3行输出100

3、第四行给全局变量a重新赋值10,所以全局变量a的值变成10,所以第五行输出10.

4、而在函数test外部,第8行输出全局变量的值,因为全局变量被重新赋值为10,所以结果是10.

 
时间: 2024-10-08 11:31:16

js基础第一天 (全局变量,局部变量)的相关文章

js基础第一天

啦啦啦,学习js第一天,其实之前就对js的基础有所了解,但总是感觉稀里糊涂的,很是苦恼啊.这次我打算把学习速度放慢,学细,学会.上午写了一个小案例,所以今天整理的不多 js介绍 js是一款运行在客户端的网页编程语言 js的组成部分 ecmascript   js标准(核心) 简单点说,ecmascipt描述了以下内容:语法.类型.语句.关键词.保留字.运算符.对象. DOM   通过js操作网页元素(文档对象模型) DOM通过创建树来表示文档,从而使开发者对文档的内容和结构具有空前的控制力.用D

JS的全局变量&amp;局部变量

1 <script> 2 var i=10; //全局变量 3 j = 20; //全局变量 4 5 function(){ 6 var i=30; //局部变量 7 h = 40; //全局变量 8 } 9 </script> 由此可以总结一句话,在函数内部定义的就是局部变量,否则就是全局变量. 1 <script> 2 var i =10; 3 function display(){ 4 //var i = 20;//局部变量只在局部作用域起作用 5 i= 30;

js基础--javascript基础概念之语法

掌握一门语言 必须先掌握它的语法! javascript 的语法和C.Java.Perl 的语法有些相似.但是比它们更加宽松. javascript 中的一切都是严格区分大小写的.例如变量: demo 和 Demo 两个变量是完全不同的. javascript 标示符,所谓标示符 是指 变量.函数.属性 的名字或函数的参数.标示符的格式是按照以下规则组合的一个或多个字符. 1.第一个字符必须是字母,下划线,或 $ 符号. 2.其他字符可以是字母.下划线.$ . 或数字. 注意 不能把关键字 保留

JS基础(一)

01-JS中的变量和输入输出 一.[使用JS的三种方式] 1.在html标签中直接内嵌js.(不提倡使用,不符合w3c关于内容与行为分离的要求) 2.在html页面中使用<script></script>包裹js代码.(Script标签可以放到页面的任何位置) <script type="text/javascript"> js代码 </script> 3.引入外部的js文件,使用script标签 <script type=&quo

JS基础知识回顾:ECMAScript的语法(一)

任何语言的核心都必然会描述这门语言最基本的工作原理,而描述的内容通常都要涉及这门语言的语法.操作符.数据类型.内置功能等用于构建复杂解决方案的基本概念. ECMAScript中的一切变量.函数名.操作符都区分大小写. ECMAScript的标识符要符合下列规则:第一个字符必须是字母.下划线或美元符号:其他字符可以是字母.下划线.美元符号或数字. 标识符中的字母也可以包含扩展的ASCII或Unicode字母字符,但是并不推荐. 按照惯例,ECMAScript标识符采用驼峰大小写的格式来书写,尽管没

JS基础篇

                                                  JS基础 使用JS的三种方法 1,在HTML标签中,直接内嵌JS(不提倡使用) <button onclick="alert('你真点啊')">点我啊!!!</button>      >>>不符合W3C内容与行为分离的要求!!! 2.在HTML页面中,使用<script></script>包裹JS代码:   <sc

JS基础--函数与BOM、DOM操作、JS中的事件以及内置对象

   前   言 絮叨絮叨 这里是JS基础知识集中讲解的第三篇,也是最后一篇,三篇JS的基础,大多是知识的罗列,并没有涉及更难得东西,干货满满!看完这一篇后,相信许多正在像我一样正处于初级阶段的同学,经过初步的学习,会对这一门语言有了一定深入的了解,也会感受到这一门语言的强大之处.希望各位同学通过一定的学习,会得到等大的收获. 因为是最后一篇所以内容可能有点多,希望各位同学能够慢慢看,细细看,让我们一起学习,一起进步,一起感受JS的魅力. 一函数 函数的声明及调用 1.函数的声明格式: func

Node.js基础知识杂烩

Node.js基础知识杂烩 这段时间做项目主要做关于服务器的功能点,因此,逐渐开始学习node.js写服务器,总体下来,觉得node比php更好用,写服务前器的速度更快,处理效率更高.注:node并不是专门写服务器的,其实node的出现,将js从web前端的专用语言,变成了一门通用语言.node中有各样的基础模块:比如fs,path,buffer,http,net等模块,此外,node还有各种各样的三方模块,比如写服务器人常用的express,co,koa,seqlize等著名框架,也就是三方模

js基础梳理-如何理解作用域和作用域链?

本文重点是要梳理执行上下文的生命周期中的建立作用域链,在此之前,先回顾下关于作用域的一些知识. 1.什么是作用域(scope)? 在<JavaScritp高级程序设计>中并没有找到确切的关于作用域的定义,只是在"4.2执行环境及作用域"中简单说了下执行环境(execution context)的概念.而执行环境其实就是之前博客:js基础梳理-究竟什么是执行上下文栈(执行栈),执行上下文(可执行代码)?中的执行上下文. 而在<JavaScript权威指南>中,对作