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. [WebServer] Tomcat 配置访问限制:访问白名单和访问黑名单

    前言: 昨天配置了 Tomcat 服务器运行 PHP 的环境,但是通过观察 Tomcat 这几天的日志发现,有很多莫名其妙的 IP 访问主机下莫名其妙的地址,如:/80./testproxy.php. ...

  2. HDU 1712 分组背包

    ACboy needs your help Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  3. php导入excel

    使用phpexcelreader这个类文件来导入excel具体步骤: 先下载文件,然后引入phpexcelreader:下载地址:http://www.waaqi.com/wp-content/upl ...

  4. Android的RecyclerView

    简介 RecyclerView是support-v7中用来替换ListView的组件.RecyclerView 小组件比 ListView 更高级且更具灵活性. 此小组件是一个用于显示庞大数据集的容器 ...

  5. HDU2459 后缀数组+RMQ

    题目大意: 在原串中找到一个拥有连续相同子串最多的那个子串 比如dababababc中的abababab有4个连续的ab,是最多的 如果有同样多的输出字典序最小的那个 这里用后缀数组解决问题: 枚举连 ...

  6. Debian 7环境安装TightVNC+Gnome远程桌面环境

    昨天下午的时候一个Hostus网友希望在购买的VPS主机中安装桌面环境用来跑软件项目,其实也是我们很多用户习惯的VNC桌面,毕竟在LINUX服务器中也无法去安装WINDOWS系统,尤其是OPENVZ架 ...

  7. 64位计算机安装setuptool

    Python Version 2.7 required, which was not found in the registry 新建注册表信息:HKEY_LOCAL_MACHINE\SOFTWARE ...

  8. Linq 备忘录

    public class CTest { public int i { get; set; } public string j { get; set; } } 一.Range var items=En ...

  9. EasyUI加载树控件自动展开所有目录

    在这里如何加载树控件就不在熬述,在加载树控件后,树的节点全部展开,要在OnLoadSuccess事件中写代码:

  10. 结构及其使用 struct (C#)

    首先结构是值类型. 结构是使用 struct 关键字定义的,结构如下: struct 结构名{} 结构概述 结构具有以下特点: 结构是值类型,而类是引用类型. (结构不能包含显式的无参数构造函数) 与 ...