JavaScript基本概念(二)--- 变量

变量

1、 变量定义

Javascript中使用var来定义变量,具体格式如下所示:

var  name = 1;

如果只声明了变量而没有对变量进行初始化,那么此时变量的值就是undefined;(为什么是undefined请看变量第三节)

当然,也可以一次定义多个变量,如下所示:

var a1 = 1, a2 = true, a3 = “张三”;

由于javascript中的变量是松散类型的,也就是我们所说的弱类型的变量,因此不同类型的初始化的变量可以放在一行进行;

在javascript中定义变量时也可以不使用var,直接使用如下的方式进行初始化:

age = 20;

但是使用这种方式定义的变量属于全局变量,在浏览器中也就是windows的变量,这里就要牵扯到变量的作用域问题,什么意思呢?就是说使用var定义的变量是定义该变量的作用域中的局部变量;

2.全局变量和局部变量

上面说到使用var定义的变量是定义该变量的作用域中的局部变量,什么意思呢?举个例子来说明一下,如下所示:

可以看到在函数test内部定义的变量,在函数外部访问的时候报错了,意思就是说该变量没有定义,为什么会出现这种错误呢?这是因为,在函数内部定义的变量,当函数执行完之后该变量就被销毁了,因此在函数外部是无法访问的,说明title变量的作用域仅仅是在函数test内部,也就是说title是函数test的局部变量;

看第二个例子:

这个例子中在函数外部定义了两个变量,分别是使用var定义的title和直接定义的name,运行结果可以发现,不管是函数内部还是函数外部,都可以访问到这两个变量,说明定义的这两个变量都是全局变量,那么全局变量的作用域是什么呢?全局变量的作用域是window,也就是当前浏览器窗口,通过上面的例子也可以看到;

再看第三个例子:

看到这里有人会奇怪,第一个例子不是说在函数内部定义的变量的作用域在函数内部吗?现在为什么在函数外部又可以访问了?这个就要看清楚第一个例子和这个例子不同之处了,第一个例子中在函数内部定义的变量使用了var操作符,但是这里没有var操作符,什么意思呢?也就是说,在函数内部定义的变量,如果没有使用var操作符,那么这个变量就是全局变量。

上面三个例子都是在正常模式下,但是ECMAScript 5 中加入了严格模式,关于严格模式我上一篇文章已经介绍了,大家可以去看一下,当然也可以自己问度娘,我们把上面的例子改成严格模式:

开启严格模式之后,打印的结果如上所示,也就是说,在严格模式下,变量的定义必须使用var,否则直接报错。

最后注意一点,在严格模式下是不能使用eval和arguments作为变量名的,否则会报语法错误。

3.基本变量和引用变量存储结构

这部分内容本来我是看了http://www.cnblogs.com/sharpxiajun/p/4133462.html这篇博客才懂的,本来想写出来的,但是写的时候难免的会需要原文的一些图片或者见解,后来想想还是不写了,直接把连接贴出来,想看的大家自己去看原文吧,写的真的很好。

变量部分暂时就这样,下一篇开始写数据类型;

时间: 2025-01-18 15:44:54

JavaScript基本概念(二)--- 变量的相关文章

js基础--javascript基础概念之变量与作用域

js基础--javascript基础概念之变量.作用域 javascript按照ECMA-262 的定义,变量与其他语言变量有所不同.js变量时松散的,不需要事先定义变量类型的.这使得他只是一个保存特定值的一个名称.变量与其数据类型可以在脚本的生命周期内改变. 还有明白几点: JavaScript的变量作用域是基于其特有的作用域链的,JavaScript没有块级作用域. 基本类型和引用类型的值 ECMAScript 的变量有两种不同的数据类型:分别是 基本数据类型值 和 引用类型值 : 基本数据

JavaScript基本概念(变量和数据类型)

1. 变量 在局部作用域中省略var操作符可以定义全局变量,但是这么做会导致该变量难以维护,且在严格模式下会导致抛出ReferenceError错误. 2. 数据类型(js共用6种数据类型,分别是 Undefined,Null,Boolean,Number,String,Object) 2.1 typeof操作符 对一个值使用typeof操作符可能会返回下列某个字符串: □ "undefined" ---如果这个值未定义或者未初始化: □ "boolean" ---

js基础--javascript基础概念之数组(二)

js基础--javascript基础概念之数组 数组栈方法 数组可以像栈一样.栈是一种先进后出的数据结构,最先添加的数据最后一个出来.栈方法添加数据也称为 推入  移除数据称为 弹出. js为数值栈方法提供了 push()   和  pop() ;  两个方法. push() push() 方法接受参数就是你要添加进入到数组的值.push()  方法会将他们逐一添加到数组的末尾  数组的length属性会跟着更新数据. *push(多个数组元素值) 返回的修改后的数组长度 var array =

js基础--javascript基础概念之语句(二)

js基础--javascript基础概念之语句(二)label,break,continue.. break .  continue 语句. break  continue 语句用于在循环中精确控制代码的执行,其中break语句会立即退出循环,执行循环后面的语句. continue 则退出循环后返回到再次进入循环中. 如: var num = 0; for(var i = 0; i<=100; i++){ if(i >= 10){ break; } num = i; } alert(num);

从头开始学JavaScript (二)——变量及其作用域

原文:从头开始学JavaScript (二)--变量及其作用域 一.变量 ECMAscript变量是松散型变量,所谓松散型变量,就是变量名称可以保存任何类型的数据,每个变量仅仅是一个用于保存值的占位符. 定义:var firstDemo; 二.变量的作用域 2.1基本概念 使用var 定义变量:定义该变量的作用域的局部变量,这种定义变量的方法也被成为显式声明. 这么说不理解的话可以看看下面这个简单粗暴的例子: test();function test(){var firstDemo="hello

JavaScript随笔记(一)基础概念以及变量类型

一.JavaScript中的基础概念 1.defer属性 一般我们在引用外部js文件的时候往往是将引用文件的位置放在标签当中,比如那么在标签中引入多个js文件时,浏览器会按照引入顺序加载执行这些引入的js文件,如果加载执行的这些js文件的时间比较长,那么页面就会处在等待期间.在下载引入的js文件时,现在的浏览器大多都是会并行下载的,不会去单线程的下载,这样提高了效率,但仍然会阻塞一些其他资源的下载比如说图片的下载,这样就因为js的下载执行而阻塞了UI渲染,会在页面上形成空白页面,这时我们可以有多

深入理解Javascript闭包概念

一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量. Js代码 var n=999; function f1(){ alert(n); } f1(); // 999 另一方面,在函数外部自然无法读取函数内的局部变量. Js代码 function f1(){ var n=999; } alert(n); // error 这里有一个地方需要注意,函数

js基础--javascript基础概念之语法

掌握一门语言 必须先掌握它的语法! javascript 的语法和C.Java.Perl 的语法有些相似.但是比它们更加宽松. javascript 中的一切都是严格区分大小写的.例如变量: demo 和 Demo 两个变量是完全不同的. javascript 标示符,所谓标示符 是指 变量.函数.属性 的名字或函数的参数.标示符的格式是按照以下规则组合的一个或多个字符. 1.第一个字符必须是字母,下划线,或 $ 符号. 2.其他字符可以是字母.下划线.$ . 或数字. 注意 不能把关键字 保留

js基础--javascript基础概念之数组

js基础--javascript基础概念之数组 在ECMAScript 中 ,数组是很常用的数据类型,js中的数组和其他很多语言的数组有明显的区别.js的数组可以保持任何类型的数值,一个数组中可以保存着多个不同类型的数值.js数组大小(长度)是可以调整的.可以随着数据的添加自动增长数组长度. 创建数组: 一.数组字面量 数组字面量由一对包含数组项的方括号[]表示. var array = [ 'kin', 'cheong', 'change', 'hello', 'haha', 'hi' ];

零基础JavaScript编码(二)

任务目的 在上一任务基础上继续JavaScript的体验 学习JavaScript中的if判断语法,for循环语法 学习JavaScript中的数组对象 学习如何读取.处理数据,并动态创建.修改DOM中的内容 任务描述 参考以下示例代码,页面加载后,将提供的空气质量数据数组,按照某种逻辑(比如空气质量大于60)进行过滤筛选,最后将符合条件的数据按照一定的格式要求显示在网页上 <!DOCTYPE html> <html> <head> <meta charset=&