JavaScript学习笔记之变量
来源:互联网 发布:北京市水文站数据 编辑:程序博客网 时间:2024/05/21 06:20
变量的类型
JavaScript的变量是无类型的(untyped),这点和java、c等语言是不同的。像java这样有严谨类型声明的变量比较适合于工程较大的后台中,方便程序的维护和管理,而javascript一般作为脚本使用。采用无类型的变量比较简单,且容易掌握。
变量的声明
在javascript中,使用一切变量之前都必须声明。尽管你会看到一些javascript代码貌似直接使用了变量,而没有在之前进行声明。这种情况下,该变量被隐式地声明为全局变量。即使你再函数的内部使用了隐式声明的变量,那么这个变量也会是全局变量。
提到变量的声明,还有一点得说的是javascript中的undefined类型。undefined类型通常包括三种情况:
- 未声明变量,直接使用,代码如下。在这种情况下,javascript会报一个变量为定义的错误。
console.log(x);
- 变量声明,但并未赋值。这种情况下,控制台会输出undefined。
var x;console.log(x);
- 使用了对象中不存在的属性;这种情况下,控制台也会输出一个undefined。
var obj = new Object();obj.x = 3;console.log(obj.y);
变量的作用域
变量的作用域:全局变量和局部变量。当然,一般的教程上面都会这样说,让你区分全局变量和局部变量。其实在我看来,javascript中并没有全局和局部变量之分。全局变量其实也可以看做是局部变量,因为它们其实都是js对象中的私有属性。
我们知道js可以创建对象,在我们创建的对象中声明的变量被看做是局部变量。因为它只在这个对象中有效,在这个对象的外部是无法访问的。而这个对象叫做调用对象。
或者是在js定义的函数中声明的变量,也被看做是局部变量。同上面所述。
但是上面两种情况下的局部变量,我要强调一点。就是一定要是被声明的变量。看下下面的两段代码:
var x = 3;function showX(){ console.log(x);}showX()
var x = 3;function showX(){ var x = 5; console.log(x);}
在第一段代码中,使用的x并未声明,它使用的全局的变量x。第二段代码中,x是声明的,属于局部变量。
这里说明的一点是,如果局部变量和全局变量同名。那么在在局部变量的作用域内,使用的是局部变量。这就是强龙不压地头蛇的道理。
最后补充说明的一点是关于js中的全局变量,我们为什么叫他全局变量呢。其实,所谓的全局变量也只是定义在全局对象中的变量,因此我们叫他全局变量,因为它在这个全局对象中可见,可以说是可见范围最大的了。
那么js中全局对象有时什么呢,对,就是window对象。也就是你的浏览器中每个标签也都是一个独立的window对象,js代码独立运行在每个标签也中互不干扰,同时他们也没有权限去执行其他标签页的js代码,这是设计者处于安全性的考虑。同时,在html中内嵌的frame框架,也是一个单独的window对象。
基本类型和引用类型
基本类型是指变量在内存中所占的大小固定,包括:数值、布尔、null和undefined。
引用类型在内存中所占大小不是固定的,包括数组和对象以及函数。
这里我们并没有提及字符串类型,它是一种比较特殊的类型。
- JavaScript学习笔记之变量
- JavaScript学习笔记:变量
- Javascript学习笔记(二)Javascript核心之变量
- JavaScript学习之 变量
- JavaScript学习之变量
- 《Javascript权威指南》学习笔记二之变量
- 《Javascript权威指南》学习笔记二之变量
- 《学习笔记》之JavaScript--声明和使用变量
- javascript学习笔记(变量篇)
- Javascript 变量对象学习笔记
- javascript学习之静态变量
- JavaScript学习之变量类型
- 学习笔记之JavaScript
- php5学习笔记之变量
- c++学习笔记之变量
- Python 学习笔记之变量
- Java学习笔记之变量
- python学习笔记之变量
- 11.通用定时器—基于CT117E开发板的STM32库函数编程
- zookeeper节点Watch机制实例展示
- 可以让你嗨翻春节的创意开源工具
- LeetCode 114. Flatten Binary Tree to Linked List
- 即搜即得,首批 Android Instant Apps 开始测试
- JavaScript学习笔记之变量
- 1. web前端开发分享-css,js入门篇
- 神经网络学习笔记-01-基本概念
- LEETCODE--Reverse String
- 关于js中call(), apply(), bind()简单的解释
- 关于个人blog被黑的说明
- C语言 sizeof函数详解
- sizeof详解——版本2
- 秒杀系统设计优化