JavaScript高级程序设计之基本概念之变量第3.3讲笔记
来源:互联网 发布:软件代理加盟协议 编辑:程序博客网 时间:2024/06/05 08:12
ECMAScript 的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据。换句话说,
每个变量仅仅是一个用于保存值的占位符而已。定义变量时要使用 var 操作符(注意 var 是一个关键
字) ,后跟变量名(即一个标识符) ,如下所示:
var message;
这行代码定义了一个名为 message 的变量,该变量可以用来保存任何值(像这样未经过初始化的
变量,会保存一个特殊的值—— undefined ,相关内容将在 3.4 节讨论) 。ECMAScript 也支持直接初始
化变量,因此在定义变量的同时就可以设置变量的值,如下所示:
var message = "hi";
在此, 变量 message 中保存了一个字符串值 "hi" 。 像这样初始化变量并不会把它标记为字符串类型;
初始化的过程就是给变量赋一个值那么简单。因此,可以在修改变量值的同时修改值的类型,如下所示:
var message = "hi";
message = 100; // 有效,但不推荐
在这个例子中,变量 message 一开始保存了一个字符串值 "hi" ,然后该值又被一个数字值 100 取
代。虽然我们不建议修改变量所保存值的类型,但这种操作在 ECMAScript 中完全有效。
有一点必须注意, 即用 var 操作符定义的变量将成为定义该变量的作用域中的局部变量。 也就是说,
如果在函数中使用 var 定义一个变量,那么这个变量在函数退出后就会被销毁,例如:
function test(){
var message = "hi"; // 局部变量
}
test();
alert(message); // 错误!
每个变量仅仅是一个用于保存值的占位符而已。定义变量时要使用 var 操作符(注意 var 是一个关键
字) ,后跟变量名(即一个标识符) ,如下所示:
var message;
这行代码定义了一个名为 message 的变量,该变量可以用来保存任何值(像这样未经过初始化的
变量,会保存一个特殊的值—— undefined ,相关内容将在 3.4 节讨论) 。ECMAScript 也支持直接初始
化变量,因此在定义变量的同时就可以设置变量的值,如下所示:
var message = "hi";
在此, 变量 message 中保存了一个字符串值 "hi" 。 像这样初始化变量并不会把它标记为字符串类型;
初始化的过程就是给变量赋一个值那么简单。因此,可以在修改变量值的同时修改值的类型,如下所示:
var message = "hi";
message = 100; // 有效,但不推荐
在这个例子中,变量 message 一开始保存了一个字符串值 "hi" ,然后该值又被一个数字值 100 取
代。虽然我们不建议修改变量所保存值的类型,但这种操作在 ECMAScript 中完全有效。
有一点必须注意, 即用 var 操作符定义的变量将成为定义该变量的作用域中的局部变量。 也就是说,
如果在函数中使用 var 定义一个变量,那么这个变量在函数退出后就会被销毁,例如:
function test(){
var message = "hi"; // 局部变量
}
test();
alert(message); // 错误!
图灵社区会员 StinkB
这里,变量 message 是在函数中使用 var 定义的。当函数被调用时,就会创建该变量并为其赋值。
而在此之后,这个变量又会立即被销毁,因此例子中的下一行代码就会导致错误。不过,可以像下面这
样省略 var 操作符,从而创建一个全局变量:
function test(){
message = "hi"; // 全局变量
}
test();
alert(message); // "hi"
这个例子省略了 var 操作符,因而 message 就成了全局变量。这样,只要调用过一次 test() 函
数,这个变量就有了定义,就可以在函数外部的任何地方被访问到。
虽然省略 var 操作符可以定义全局变量, 但这也不是我们推荐的做法。 因为在局
部作用域中定义的全局变量很难维护, 而且如果有意地忽略了 var 操作符, 也会由于
相应变量不会马上就有定义而导致不必要的混乱。 给未经声明的变量赋值在严格模式
下会导致抛出 ReferenceError 错误。
可以使用一条语句定义多个变量,只要像下面这样把每个变量(初始化或不初始化均可)用逗号分
隔开即可:
var message = "hi",
found = false,
age = 29;
这个例子定义并初始化了 3 个变量。同样由于 ECMAScript 是松散类型的,因而使用不同类型初始
化变量的操作可以放在一条语句中来完成。虽然代码里的换行和变量缩进不是必需的,但这样做可以提
高可读性。
在严格模式下,不能定义名为 eval 或 arguments 的变量,否则会导致语法错误。
0 0
- JavaScript高级程序设计之基本概念之变量第3.3讲笔记
- JavaScript高级程序设计之基本概念之语法 第3.1讲笔记
- JavaScript高级程序设计之基本概念之关键字和保留字 第3.2讲笔记
- JavaScript高级程序设计之基本概念之数据类型第3.4讲笔记
- JavaScript高级程序设计之基本概念之关系操作符第3.5.6讲笔记
- JavaScript高级程序设计之基本概念之相等操作符第3.5.7讲笔记
- JavaScript高级程序设计之基本概念之相等操作符第3.5.8讲笔记
- JavaScript高级程序设计之基本概念之语句第3.6讲笔记
- JavaScript高级程序设计之基本概念之函数第3.7讲笔记
- JavaScript高级程序设计之JavaScript 简介 第1.1讲笔记
- JavaScript高级程序设计之JavaScript实现 第1.2讲笔记
- JavaScript高级程序设计之JavaScript 版本 第1.3讲笔记
- JavaScript高级程序设计之基本概念之操作符之位操作符第3.5.2讲笔记
- JavaScript高级程序设计之基本概念之操作符之布尔操作符第3.5.3讲笔记
- JavaScript高级程序设计之基本概念之操作符之乘性操作符第3.5.4讲笔记
- JavaScript高级程序设计之基本概念之操作符之加性操作符第3.5.5讲笔记
- JavaScript高级程序设计之函数表达式之私有变量之静态私有变量第7.4.1讲笔记
- JavaScript高级程序设计之基本概念之操作符之一元操作符第3.5.1讲笔记
- Struts2 用通配符方式动态调用方法
- mybatis的一级缓存实现详解
- Android解决软键盘遮挡Button
- Android执行shell脚本命令(备忘记录与实际应用)
- 2015年华为面试经历
- JavaScript高级程序设计之基本概念之变量第3.3讲笔记
- 用简单的方法实战演练搭建http服务器(Windows上)------专为http新手
- Scala深入浅出进阶经典 第57讲:Scala中Dependency Injection实战详解
- C/C++ 中的次方运算
- 【Android杂谈】AsyncTask的详细使用解析
- linux之sed用法
- 第107讲:Akka中的Future使用代码实战详解学习笔记
- Scala深入浅出进阶经典 第58讲:Scala中Abstract Types实战详解
- Android 四种基本布局LinearLayout、RelativeLayout、FrameLayout、TableLayout