js中全局变量的一点小知识点

js中有三种方式定义全局变量:

  • 在任何函数外面直接执行var语句,例如:var f="value";
  • 直接添加一个属性到全局变量上,在web浏览器中,全局对象名为window。例如:window.f="value";
  • 直接使用未经过声明的变量,以这种方式定义的全局变量成为隐式的全局变量。例如:f="value";

尽可能少使用全局变量:

其中一种方法就是将他们添加到同一个命名空间去:例如:

1 var My={};
2 My.name={
3         "first name":"first",
4         "last-name":"last"
5 };
6 My.work={
7      ……
8 };

以上代码中定义了唯一一个全局变量My,所有的全局变量都添加到My中。

js支持函数作用域,但不支持块作用域,为了减少块级作用域的使用,就在函数体顶部就声明函数中所有可能会用到的变量。

举例说明:

 1 <script type="text/javascript">
 2        var foo=function(){
 3            var a=1,b=2;
 4            var bar=function(){
 5                var b=3,c=4;
 6                a+=b+c;
 7                console.log(a);
 8                console.log(b);
 9                console.log(c);
10            };//在此处就已经是c=undefined
11            bar();
12            console.log(a);
13         console.log(b);
14            console.log(c);
15        }
16        foo();
17     </script>

以上代码执行结果为

时间: 2024-08-03 06:04:02

js中全局变量的一点小知识点的相关文章

Ubuntu14.04安装mysql及过程中遇到的一点小问题

Ubuntu14.04出来有段时间了,前几天刚升级到这个版本,新鲜了一把.不过安装mysql时遇到了一点小问题,记录一下以备后用. 预备操作: 网上安装mysql的方法不少,大体有这么三种. 1. 从网上安装 sudo apt-get install mysql-server.装完已经自动配置好环境变量,可以直接使用mysql的命令. 2. 安装离线包,以mysql-5.0.45-linux-i686-icc-glibc23.tar.gz为例. 3. 二进制包安装:安装完成已经自动配置好环境变量

js中闭包和对象相关知识点

学习js时候,读到几篇不错的博客.http://www.cnblogs.com/yexiaochai/p/3802681.html一,作用域 和C.C++.Java 等常见语言不同,JavaScript 的作用域不是以花括号包围的块级作用域(block scope),这个特性经常被大多数人忽视,因而导致莫名其妙的错误.例如下面代码,在大多数类C 的语言中会出现变量未定义的错误,而在JavaScript 中却完全合法: if(true) { var somevar = 'value'; } con

面向对象中一丢丢小知识点

1.使用 Function 创建函数与原来的方式创建函数: Function 是使用字符串构建函数, 那么就可以在程序运行过程中构建函数 将数组形式的字符串, 转换成数组对象 var arr = ( new Function( 'return ' + str + ';' ) )(); 2.eval();不常用,易受恶意攻击.用()将其转换成表达式,{}不再是语句块,转换成代码块而是对象了 3.变量名提升:预解析(标记声明).代码执行.调用 4.函数声明与函数表达式有区别:函数声明是单独写在一个结

js中全局变量修改后的值不生效【jsp页面中各个js中内容的加载顺序】

一个老项目中,一个jsp文件中有很多个js文件, 现在要在页面上的一个地方判断一个状态,因为一直找不到原来是在哪里修改的那个状态,所以决定不找了,而是在比较靠前引入的一个js中定义一个全局变量,然后在这个js的 $(function(){}} 方法中通过一个ajax向后台获取正确的状态,然后在所有的js都加载完之后根据全局变量的值的状态来修改页面上的逻辑. 但是发现,全局变量被一个外部js修改赋值后,我在jsp页面的最下面居然取不到修改过的值. 请教同事才发现原来原因是 任何一个js文件中的 $

js中return返回值小练习

本文只是帮助初学者入门用的 关于js中的返回值return 如果函数中存在return,执行到了那行之后就直接跳出整个函数,接着向下执行 上例子 定义一个函数是否是偶数,如果是返回true,如果不是返回false? 我相信大多数才学的人会这样写 function isOu(num){ if(num%2==0){ return true }else{ return false } } 这样写不是不可以,只是有点啰嗦 因为num%2==0本身就是一个判断,所以 function isOu(num){

关于js中全局变量和局部变量的寄到小题

往往最基本的也是最根本的. 这里有三道关于全局变量和局部变量的小题,供诸位一阅. 知识点: (1)在最外层声明的是全局变量 (2)在函数内声明的是局部变量 (3)在函数体内部,但是没有用var声明的变量也是全局变量 第一题: var a = 10;function fun(){var a = "global";}console.log(a); 第二题: var a ;function fun(){a = "global";} fun();console.log(a)

关于前端js拼接字符串的一点小经验

1.今天在做项目的时候遇到一个问题,就是使用onclick="xxx()"  点击事件的时候,参数如果为全数字就会出现点击无反应的问题.但是当参数为字符串或者动态内容的时候就会出现事件无法响应.比如onclick="add("abc")";这样在add方法中无法获取到参数. 解决办法:是用转移字符,onclick="add(\'abc\')";这样在方法中就可以使用了.         2.还有一个是在做拼接字符串的时候,如果

关于js中的事件委托小案例

需求:页面上有一个按钮,和一个空的ul,要求点击按钮,会给ul中动态添加li元素,然后,点击动态添加的元素,在控制台上输出,这是第几个元素 <ul> </ul> <button>点击增加</button> var ul = document.querySelector('ul'); var btn = document.querySelector('button'); //动态添加元素 btn.addEventListener('click',functio

VB.NET开发中遇到的一点小问题

在用vb.net开发的security support时,遇到一个问题,在trainingCourses.aspx页面上增加了一个HyperLink控件 <asp:HyperLink runat="server" ID="hlUSOnline" Text="Show Online Training Course" NavigateUrl="/secure/trainingCourses.aspx?c=en-US&o=Tru