这篇文章主要是对Javascript变量作用域进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助
变量的作用域指的是变量的可见性,而生命周期则(存活期)则是从另一个角度考察变量。
JS中变量的作用域分为全局变量和局部变量,函数内定义的称为局部变量,函数外的称为全局变量。(“函数外的称为全局变量”是相对的,另此处讨论的前提是用var显式声明的变量,函数内不用var定义的变量默认是全局变量,当然忽略var声明变量是不赞成的)。
代码如下:
var glob = 4;//函数外声明全局变量
function fun() {
var height = 20; //函数内用var声明的是局部变量
weight = 50; //函数内不用var声明的是全局变量
}
fun();
alert(weight);
JS中没有块级作用域,即用大括号{}包含的。Java中则有。在main方法中写入下代码
代码如下:
public static void main(String... args) {
for(int i=0;i<5;i++) {
}
{
int j=10;
}
int z = 20;
System.out.println(i); // i不可见,语法分析时报错,即编译不通过
System.out.println(j); // j不可见,语法分析时报错,即编译不通过
System.out.println(z); // z可见,输出20
}
但如果在JS中
代码如下:
for(var i=0;i<5;i++) {
}
var obj = {name:"Lily"};
for(var attr in obj) {
}
{
var j=10;
}
alert(i);//输出4,没有块级作用域
alert(attr); //输出name,没有块级作用域
alert(j);//输出10,没有块级作用域
这也说明一个问题,避免在全局范围内使用for循环同时声明变量,否则会造成全局命名范围的污染。
当然,JS1.7中提出了let关键字声明变量(见https://developer.mozilla.org/cn/New_in_JavaScript_1.7),只作用于for语句范围。
代码如下:
for(let i=0;i<5;i++) {
//todo
}
alert(i);//运行时报错,提示i未定义
JS1.7需要这样引用 <script type="application/javascript;version=1.7"/></script>
ps:firefox2+实现了JS1.7
Javascript变量作用域详解
时间: 2024-10-03 16:55:01
Javascript变量作用域详解的相关文章
Javascript变量作用域详解_javascript技巧
变量的作用域指的是变量的可见性,而生命周期则(存活期)则是从另一个角度考察变量. JS中变量的作用域分为全局变量和局部变量,函数内定义的称为局部变量,函数外的称为全局变量.("函数外的称为全局变量"是相对的,另此处讨论的前提是用var显式声明的变量,函数内不用var定义的变量默认是全局变量,当然忽略var声明变量是不赞成的). 复制代码 代码如下: var glob = 4;//函数外声明全局变量 function fun() { var height = 20; //函数内用
php变量作用域详解(1/3)
例如: 代码如下 复制代码 <?php $a = 1; include 'b.inc'; ?> 这里变量 $a 将会在包含文件 b.inc 中生效.但是,在用户自定义函数中,一个局部函数范围将被引入.任何用于函数内部的变量按缺省情况将被限制在局部函数范围内.例如: 代码如下 复制代码 <?php $a = 1; /* global scope */ function Test() { echo $a; /* reference to local scope variable
Python中的变量和作用域详解_python
作用域介绍 python中的作用域分4种情况: L:local,局部作用域,即函数中定义的变量: E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的: G:globa,全局变量,就是模块级别定义的变量: B:built-in,系统固定模块里面的变量,比如int, bytearray等. 搜索变量的优先级顺序依次是:作用域局部>外层作用域>当前模块中的全局>python内置作用域,也就是LEGB. x = int(2.9) # int bu
javascript执行环境及作用域详解_javascript技巧
最近在重读<javascript高级程序设计3>,觉得应该写一些博客记录一下学习的一些知识,不然都忘光啦.今天要总结的是js执行环境和作用域. 首先来说一下执行环境 一.执行环境 书上概念,执行环境定义了变量或者函数有权访问的其他数据,决定了他们各自的行为.每个执行环境都有一个与之关联的变量对象.环境中定义的所有变量和函数都保存在这个对象中.虽然我们在编写代码的时候无法访问这个对象,但解析器在处理数据时会在后台用到它. 执行环境是一个概念,一种机制,它定义了变量或函数是否有权
JavaScript严格模式详解_javascript技巧
如我们所知,JavaScript 是一门灵活的语言.其灵活性同样也带来了很多坑,当然也有一些是 设计缺陷 .比如 一个变量没有声明就赋值,默认是全局变量,如 (function () { a = 3; })(); console.log(window.a); // 输出3 对象有多个重名属性,最后赋值的那个属性会覆盖前面的值.如 var obj = { c: 3, c: 4 } // obj 为 {c:4} 还有什么 == , typeof 之类的坑,数不胜数.毕竟 JavaScript 之父设
Linux bash Shell中的变量类型详解
这篇文章主要介绍了Linux bash Shell中的变量类型详解,变量类型共分为本地变量.局部变量.环境变量.位置变量和特殊变量等,需要的朋友可以参考下 在Linux系统中进行日常运维或者是编写脚本时,变量是再熟悉不过的了,但这些变量都有哪些类型,具体的用法又有哪些差异呢?本文整理分享给大家: 一.bash变量类型: 本地变量 局部变量 环境变量 位置变量 特殊变量(内置) 二.本地变量: varname=value:作用域为整个bash进程可以使用; 变量命名规范: 1. 只能含字母.数
JavaScript操作Cookie详解
这篇文章主要介绍了JavaScript操作Cookie详解,本文讲解了什么是Cookie.Cookie基础知识.Cookie常见问题.cookie 有两种清除方式.Cookie基础用法.Cookie高级用法等内容,需要的朋友可以参考下 什么是 Cookie "cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie.你可以使用 JavaScript 来创建和取回 cookie 的值." - w3school cooki
AngularJS 作用域详解及示例代码_AngularJS
范围扮演其视图连接控制器的角色一个特殊的JavaScript对象.范围包含了模型数据.在控制器,模型数据通过$scope对象访问. <script> var mainApp = angular.module("mainApp", []); mainApp.controller("shapeController", function($scope) { $scope.message = "In shape controller"; $s
JavaScript运算符实例详解
核心提示:JavaScript运算符实例详解 根据处理对象的数目: 单元运算符; 二元运算符; 三元运算符. 根据功能: 赋值运算符; = += -= *= /= %=(取余) 算术运算符; + - * / %(取余) ++(递增) --(递减) - 例1: 例2: <Script> var x = y = 3; with (document) { write("x = 3, y = 3 <br>"); write("若x = y