js中的全局变量和局部变量
2015-06-03 21:23
555 查看
在函数中使用var关键字进行显式申明的变量是做为局部变量,而没有用var关键字,使用直接赋值方式声明的是全局变量。
当我们使用访问一个没有声明的变量时,JS会报错。而当我们给一个没有声明的变量赋值时,JS不会报错,相反它会认为我们是要隐式申明一个全局变量,这一点一定要注意。
var num = 1是在当前域中声明变量. 如果在方法中声明,则为局部变量;如果是在全局域中声明,则为全局变量。而num = 1,事实上是对属性赋值操作。首先,它会尝试在当前作用域链(如在方法中声明,则当前作用域链代表全局作用域和方法局部作用域etc。。。)中解析 num; 如果在任何当前作用域链中找到num,则会执行对num属性赋值; 如果没有找到num,它才会在全局对象(即当前作用域链的最顶层对象,如window对象)中创造num属性并赋值。
注意!它并不是声明了一个全局变量,而是创建了一个全局对象的属性
当我们使用访问一个没有声明的变量时,JS会报错。而当我们给一个没有声明的变量赋值时,JS不会报错,相反它会认为我们是要隐式申明一个全局变量,这一点一定要注意。
var num = 1是在当前域中声明变量. 如果在方法中声明,则为局部变量;如果是在全局域中声明,则为全局变量。而num = 1,事实上是对属性赋值操作。首先,它会尝试在当前作用域链(如在方法中声明,则当前作用域链代表全局作用域和方法局部作用域etc。。。)中解析 num; 如果在任何当前作用域链中找到num,则会执行对num属性赋值; 如果没有找到num,它才会在全局对象(即当前作用域链的最顶层对象,如window对象)中创造num属性并赋值。
注意!它并不是声明了一个全局变量,而是创建了一个全局对象的属性
相关文章推荐
- H5 应用返回按钮的js代码设计,设计思想模仿stack
- js实时计算字数提醒的文本框
- js ==与===区别(两个等号与三个等号)
- javascript轮播技术
- Javascript 中的非空判断 undefined,null, NaN的区别
- javascript推荐书籍
- JavaScript高级程序设计 读书笔记
- JavaScript Dom编程艺术 读书笔记
- Jsp知识总结
- 将JSON字典转换为Model文件
- Json转换利器Gson之实例六-注册TypeAdapter及处理Enum类型
- Json转换利器Gson之实例五-实际开发中的特殊需求处理
- Json转换利器Gson之实例四-Map处理(下)
- Json转换利器Gson之实例三-Map处理(上)
- Exploring JavaScript
- Json转换利器Gson之实例一-简单对象转化和带泛型的List转化
- 用js实现类数组转换为数组
- Javascript中的原型继承详解
- 解析json字符串三种方法
- ExtJS4图片验证码的实现