Javascript和Java、C这些语言不同,它是一种无类型、弱检测的语言。它对变量的定义并不需要声明变量类型,我们只要通过赋值的形式,可以将各种类型的数据赋值给同一个变量

 

工具/原料

 
  • Chrome 浏览器(以下代码测试均由Chrome调试)

方法/步骤

 
  • js变量的类型及申明方式等等,本文不再说明,读者可以参考相关官方文档

    这里主要介绍js变量及其作用域

  • js变量作用域可分为:"全局变量"和"局部变量"

    "全局变量":申明在函数之外的变量

    "局部变量":申明在函数体中的变量,并且只能在当前函数体内访问,如:function(){var a = 0;}

    注:在申明变量是凡是没有var关键字,而直接赋值的变量均为全局变量

  • 下面就通过几道小例子来熟悉下

    1、function test() {

    a = 30;

    var b = 20;

    }

    test();

    console.log("a="+a); //这里很明显,a为全局变量

    console.log("b="+b);//b为局部变量,故在函数test外调用是,提示未定义

  • 2、

    var a = 1;

    function test() {

    console.log("a="+a); //这里a为undefined

    /*函数中声明的变量在整个函数中都有定义。如果函数内部有定义变量,即使在定义之前输出但会先执行后面定义语句,然后判断输出结果,所以说声明的变量在整个函数中都是起作用的。*/

    var a = 2;

    }

    test();

  • 3、

    给两个小例子作为对比:

    var a; function fun() { a = "global"; } console.log(a);//输出undefined

  • var a; function fun() { a = "global"; }

    fun();console.log(a);//输出 global

  • 对于上面这两个小例子,它们唯一的区别就是一个执行了fun函数,一个没有执行;

    如果就是

    var a;console.log(a);//由于a只定义,但没初始化,故输出undefined

    而function fun(){...}中对a进行初始化,初始化操作实在fun函数作用域内,如果不执行fun()那么初始化操作也不会执行

  • 4、函数域优先于全局域,故局部变量a会覆盖掉全局变量a

    var a=1;

    function main(){

    var a=2;//局部变量

    console.log(a);//2

    }

    main();

    console.log(a);//1

  • 5、javascript没有块级作用域

    function test(){

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

    //i=0,1,2,最后执行到i=3时退出循环

    }

    console.log(i);//3

    }

    test();

    相当于

    function test(){

    var i;

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

    //i=0,1,2,最后执行到i=3时退出循环

    }

    console.log(i);//3

    }

    test();

js变量及其作用域(附例子及讲解)的更多相关文章

  1. 详解js变量、作用域及内存

    详解js变量.作用域及内存 来源:伯乐在线 作者:trigkit4       原文出处: trigkit4    基本类型值有:undefined,NUll,Boolean,Number和Strin ...

  2. JS变量、作用域、内存

    写到这个题目<JS变量.作用域,内存>,我就不由自主想起了黄金三嫖客.可能是名字有点像,嗯,一定是这样子的! JS接触下来,应该是要比Java简单不少的,所以,要学好啊.立个flag半年后 ...

  3. js课程 1-4 js变量的作用域是怎样的

    js课程  1-4   js变量的作用域是怎样的 一.总结 一句话总结:只有在函数内部前面带var的变量为局部变量,局部变量只能在函数体内使用. 1.什么情况下会出现NaN类型的错误,举一例? Num ...

  4. js变量及其作用域

    Javascript和Java.C这些语言不同,它是一种无类型.弱检测的语言.它对变量的定义并不需要声明变量类型,我们只要通过赋值的形式,可以将各种类型的数据赋值给同一个变量   一.js变量的类型及 ...

  5. Js 变量的作用域

    变量的作用域 所有的变量作用域是指在哪里可用哪里不可用 局部作用域和全局作用域 在js中以函数来分割作用域 在函数里面就叫做局部作用域,在函数外面的就叫全局作用域 在函数里面如果省略var 关键字 那 ...

  6. js变量的作用域、变量的提升、函数的提升

    变量的作用域在函数之外声明的变量,叫做全局变量,因为它可被当前文档中的任何其他代码所访问.在函数内部声明的变量,叫做局部变量,因为它只能在当前函数的内部访问. ECMAScript 6 之前的 Jav ...

  7. js变量的作用域与函数作用域

    引自 1. 变量的作用域(var与let的区别) 在函数之外声明的变量,叫做全局变量,因为它可被当前文档中的任何其他代码所访问.在函数内部声明的变量,叫做局部变量,因为它只能在当前函数的内部访问. E ...

  8. JS变量的作用域

    深入理解JavaScript变量的作用域   1.JavaScript的作用域链 2.函数体内部,局部变量的优先级比同名的全局变量高. 3.JavaScript没有块级作用域. 4.函数中声明的变量在 ...

  9. 第三章 Js变量的作用域和匿名函数

    3.1 先看下面的事例: ①var temp=0; ②temp=0; 当js解析器检测到①这种情况的时候,解析器会为这个变量开辟一个内存空间,如果前面已经存在这个变量,就会把这个变量覆盖掉. 当解析器 ...

随机推荐

  1. MDK5 STM32编译问题汇总

    MDK5 STM32编译问题汇总 WIN8.KEIL-MDK-5 编译时,出现弹窗"The ARM C/C++ Compiler 已停止工作",关闭弹窗后,编译输出的窗口中出现如下 ...

  2. 11 Set和Map数据结构

    Set和Map数据结构 Set WeakSet Map WeakMap 首先 这四个对象都是 数据结构. 用于存放数据 Set 类似数组. 但是不能重复. 如果你有重复数据,会自动忽略 属性 size ...

  3. react 犯错

    1. import a from  './xx'  一定要有 ./ 2. export default const x={} 错 改为  const x={}; export default x; 也 ...

  4. wpf 遍历控件及其值

    /// <summary> /// 遍历控件及其值 /// </summary> /// <param name="uiControls">界面 ...

  5. R 查看函数源代码

    1:输入函数名. 2:methods( ),例如methods(quantile). 3:针对方法2得到的带*的,例stats:::quantile.default.

  6. HTML5 Drop API

    转自:http://www.cnblogs.com/fsjohnhuang/p/3961066.html 一.前言    在HTML4的时代,各前端工程师为了实现拖拽功能可说是煞费苦心,初听HTML5 ...

  7. 安装cocoapods及相关问题解决

    申明:本博客大部分内容转载自简书http://www.jianshu.com/p/b64b4fd08d3c,但还有些问题博主在这里做了补充. Mac系统版本:10.12.1 一.什么是CocoaPod ...

  8. PHP图片加文字水印和图片水印方法(鉴于李老师博客因没加水印被盗,特搜集的办法。希望能有用!)

    $dst_path = 'dst.jpg'; //创建图片的实例 $dst = imagecreatefromstring(file_get_contents($dst_path)); //打上文字 ...

  9. myeclipse竖行删除

    1.Alt + shift + a   

  10. XML文件(1)--使用DOM示例

    其他依赖字段/方法 // 书籍列表 private List<Book> bookList = new LinkedList<Book>(); /** * 根据xml文件,得到 ...