1. JS的变量声明语句永远是在其作用域中最先执行的,不论其定义的位置在哪里;
  2. 函数体内部,局部变量的优先级比同名的全局变量高。
  3. Javas作用域分类
  4. 未使用var定义的变量不论定义在什么位置都是全局变量,全局变量实质属于window下的属性

1 JS的变量声明语句永远是在其作用域中最先执行的,不论其定义的位置在哪里

      var test= function()
     {
      console.log(s);//输出结果为undefined
      var s="you";
     };
     test();

原因就是在test函数作用域内,虽然var s="you"在console后面,但是由于变量的声明语句会是最先执行,因此等价于:

        var test= function()
      {
      var s;//相当于此处先执行了一步变量声明 但未赋值
console.log(s);//输出结果为undefined
      var s="you";
      };
      test();

console.log(s)结果为undefined;

2函数体内部,局部变量的优先级比同名的全局变量高

        var s="hello";
     var test= function()
     {
      var s="you";
      console.log(s);//输出结果为”you“
     };
     test();

局部变量优先级高,所以打印结果为"you"

3JS的作用域分类

Javascript作用域分类只有两种:全局作用域和方法作用域

函数又称作方法,因此方法作用域可以理解为函数内作用域,不同于C或者C++语言,JS没有块级作用域,for(var i=0;;i++)此处的i作用域就是for循环所在函数的作用域,而不是仅仅在for循环内部有效;

4未使用var定义的变量不论定义在什么位置都是全局变量

function test()//定义函数test
{
i=100;
}
test()//执行函数test
console.log(i);//输出100
console.log(window.i);//输出100

另外,需要注意的是 function XXX(){};仅仅是定义一个XXX()的函数,并没有执行函数代码,若此处没有test(),那么输出的i是undefined,也可以将

function XXX()
{
//code
};
XXX();
合并写成:
(function XXX()
{
//code
})():

形如:(function XXX(){})()是先定义函数XXX并且执行函数;此种写法的好处是能保证变量生存期,较少全局变量,易于变量回收

关于JavaScript 中的变量的更多相关文章

  1. JavaScript 中的变量命名方法

    三种命名方法 在程序语言中,通常使用的变量命名方法有三种:骆驼命名法(CamelCase),帕斯卡命名法(PascalCase)和匈牙利命名法. 依靠单词的大小写拼写复合词的做法,叫做"骆驼 ...

  2. (转载)JavaScript中定义变量

    (转载)http://blog.163.com/xuxiaoqianhz@126/blog/static/165190577201061594421870/ JavaScript中定义变量有两种方式: ...

  3. 在javascript中关于变量与函数的提升

    在javascript中关于变量与函数的提升 一.简介 在javascript中声明变量与函数的执行步骤: 1.先预解析变量或函数声明代码,会把用var声明的变量或者函数声明的代码块进行提升操作 2. ...

  4. JavaScript 中定义变量时有无var声明的区别

    关于JavaScript中定义变量时有无var声明的区别 var a=5; //正确 a=5; //正确 在javascript中,以上两种方法都是定义变量的正确方法.微软的Script56.CHM中 ...

  5. JavaScript学习系列2一JavaScript中的变量作用域

    在写这篇文章之前,再次提醒一下 JavaScript 是大小写敏感的语言 // 'test', 'Test', 'TeSt' , 'TEST' 是4个不同的变量名 JavaScript中的变量,最重要 ...

  6. 关于Javascript中声明变量、函数的笔记

    一.概念 1.变量声明 在JavaScript中,变量一般通过var关键字(隐式声明,let关键字声明除外)进行声明,如下通过var关键字声明a,b,c三个变量(并给其中的a赋值): var a=1, ...

  7. JavaScript 中对变量和函数声明提前的演示样例

    如题所看到的,看以下的演示样例(能够使用Chrome浏览器,然后F12/或者右键,审查元素.调出开发人员工具,进入控制台console输入)(使用技巧: 控制台输入时Shift+Enter能够中途代码 ...

  8. 一篇文章带你了解JavaScript中的变量,作用域和内存问题

    1 在JavaScript中的变量分别区分为两种: 一种为基本类型值,一种为应用类型值. 基本类型值指的是简单的数据段 引用类型值为可能由多个值组成的对象 引用类型的值是保存在内存中的对象,JavaS ...

  9. JavaScript中的变量在内存中的具体存储形式

    栈内存和堆内存 JavaScript中的变量分为基本类型和引用类型 基本类型是保存在栈内存中的简单数据段,它们的值都有固定的大小,保存在栈空间,通过按值访问 引用类型是保存在堆内存中的对象,值大小不固 ...

  10. 使用 JavaScript 中的变量、数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算符的不同位置得到不同的结果

    查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的变量.数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算 ...

随机推荐

  1. 基于bootstrap的后台二级垂直菜单[转]

    最近做一个后台的管理项目,用到了Twitter推出的bootstrap前端开发工具包,是一个基于css3/html5的框架.花周末时间,写了一个非常简单后台的菜单.本着开源的精神,现在把它分享出来(呵 ...

  2. nano编辑器使用教程

    使用Linux VPS会经常和编辑器打交道,一般常用的是vi和nano,虽然vi功能强大,但是相对新手来要稍微难上手,GNU nano是一个体积小巧而功能强大的文本编辑器.这里就简单说一下nano的使 ...

  3. sql 生成指定相同数量数据

    select *from  表名 ,(SELECT NUMBER FROM master..spt_values WHERE number BETWEEN  1 AND  2 AND TYPE='P' ...

  4. gitt

    一,git config core.autocrlf false 二,vi .git/config[remote "origin"] url = https://github.co ...

  5. bzoj2141 树状数组套Treap树

    题目大意是在能够改变两个数的位置的情况下计算逆序对数 这因为是动态记录逆序对 本来单纯逆序对只要用树状数组计算即可,但这里因为更新,所以利用TReap树的删点和增加点来进行更新 大致是把每个树状数组所 ...

  6. React Native 打包.jsx文件

    最近在研究React Native.感觉开发效率确实不错,但jsx语法写起来感觉不怎么顺手. 试用了Sublime Text 3和Visual Studio Code写代码,感觉反应总是慢一拍. 还是 ...

  7. React Native 使用问题记录

    1.<View></View>之间有空格会报错 Trying to add unknown view tag 2.一些js语法糖注意点http://facebook.githu ...

  8. number 数据类型的分析。

    在js中,number数据类型可能算最令人关注的的类型之一了. number类型分为整数和浮点数. 一,整型数,整型又分为十进制,八进制,十六进制. 十进制即是生活中接触到的:而八进制数的首位必须是零 ...

  9. TPCH Benchmark with Impala

    1. 生成测试数据在TPC-H的官网http://www.tpc.org/tpch/上下载dbgen工具,生成数据http://www.tpc.org/tpch/spec/tpch_2_17_0.zi ...

  10. android 开发中fragment 遇到的问题

    http://yifeng.studio/2016/12/15/android-fragment-attentions/ 1.不要轻易在 fragment中引用 getactivity(); 解决方案 ...