JAVASCRIPT变量之局部/全局变量

局部 JavaScript 变量

在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它。(该变量的作用域是局部的)。
您可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量。
只要函数运行完毕,本地变量就会被删除。

全局 JavaScript 变量

在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。

JavaScript 变量的生存期

JavaScript 变量的生命期从它们被声明的时间开始。

局部变量会在函数运行以后被删除。

全局变量会在页面关闭后被删除。

向未声明的 JavaScript 变量来分配值

如果您把值赋给尚未声明的变量,该变量将被自动作为全局变量声明。
这条语句:

carname="Volvo";

将声明一个全局变量 carname,即使它在函数内执行。

补充:

变量

对于变量的理解:变量是数据的代号。如同名字是一样。

var num;//在javascript中使用关键字var声明一个变量

在javascript中,使用上面的语法,就可以声明一个变量,以便在之后给其指定值。

var num=123;这个是直接声明一个变量,并赋值了,赋值的过程其实也是指定了变量的类型

var num;

num=123;

看下面两个代码:

 代码如下 复制代码

document.write(123);

document.write(123);

document.write(123);

document.write(123);

如果我们用变量来操作:

 代码如下 复制代码

var num;

num=123;

document.write(num);

document.write(num);

document.write(num);

document.write(num);

 虽然两个看上去没节约多少笔墨,但是有一个概念却是:使用了document.write多次输出的时候,第一个输出是每次都在内存空间里面新建了123这个值。而第二个输出的都是那个变量的值。这是我们所希望,使用变量可以清楚的表达我们想要做的,而且简短的变量名引用可以使代码更清晰且不容易出错!当然,名字不可以乱取,变量的命名有一些限制:只能包含字母,数字和下划线,还有个特殊的$字符,并且变量名只能以字母,下划线,$开头。

值、类型

 代码如下 复制代码

var dog;

dog="小虎子";//字符串

var num;

num=1;//数字

var strNum;

strNum="1"//字符串

var badNum;

badNum=3.345;//小数

badNum=.2;//仍然是一个小数

很麻烦,可以简单写:

var dog,num,strNum,badNum;

dog="小虎子";//字符串

num=1;//数字

.........................

可以看到javascript是动态类型语言,在声明变量时无需指明其类型,在运行时刻变量的值可以有不同的类型。

   数据类型有:

             字符串,数字,布尔值,Undefined, (复合型)对象和数组

数学运算与比较

 小学的数据运算:+,-,*,/,++,--这个不用说了,每个语言都是一样的标准。这里说一下+,链接字符串也使用“+”号。

 代码如下 复制代码

var num=23+"12";

alert("23+12="+num);//得到的结果是2312。

比较操作符:<,>,<=,>=,==,!=,!,比较操作符返回布尔值 也不多说了

逻辑运算符

  逻辑运算符用于对布尔值进行比较 && || !

   上面运算符用于的是数字和布尔数值(+除外一些)

 

类型转换入门

由于javascript是弱类型语言,所以完全可以将字符串和数字(两个不同类型的变量)进行相加。上面有个例子已经演示了。

 

 代码如下 复制代码

var str="some string here!";

var num=123;

alert(num*str);//将输出的NaN,因为乘法运算符只能针对数字,所以进行运算时计算机将字符串转换成数字,但是str转换成数字的时候,会是NaN。

//NaN是一个特殊的值,含义是Not A Number,不是一个数字,当将其它转换成数字失败时会得到这个值。

str="2";

alert(num*str);//将输出246,因为str可以解析成数字2.

其他的类型转换

var bool=true;

alert(bool*1);//输出1,布尔值true转换成数字是1,事实上将其它值装换成数字最简单的方法就是乘以1

bool=false;

alert(bool*1);//输出0

alert(bool+"");//输出的是false,事实上将其他的值转换成字符串最简单的方法是将其写一个空字符串相连。

var str="some string";

alert(!!str);//true,因为非运算符是针对布尔值进行运算的,所以将其类型转换只需要两次非运算。

str="";

alert(!!str);//输出false,只有空字符串转换成布尔值会是false,非空字符串装换成布尔值都是true。

var num=0;

alert(!!num);//false;

num=-123.345;

alert(!!num);//true,c除0以外的任何数字转换成布尔值都会是true

//还有一个重要的是空字符串转换成数字将会是0;

alert(""*1);//输出0

获取变量类型 typeof 运算符

 代码如下 复制代码

var bool = true;
alert(typeof bool);//输出boolean
var num =123;
alert(typeof num);//输出number
var str = "some string here";
alert(typeof str);//输出string
var strNum = "123";
alert(typeof strNum);//输出string
strNum *= 1;
alert(typeof strNum);//输出number

时间: 2024-08-31 10:41:50

JAVASCRIPT变量之局部/全局变量的相关文章

JavaScript变量(局部/全局)的详解

局部 JavaScript 变量 在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它.(该变量的作用域是局部的). 您可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量. 这么一个贴子说明了"有var"和"无var"的差别:  代码如下 复制代码 // These are both globals var foo = 1; bar = 2;   function test() {    

javascript变量:全局?还是局部?这个得注意!

做项目就是一个学习的过程! 做为一个学习C3年多,从C程序员转前端的人来说,javascript中的许多规则是没办法或者说一时半会理解不了的. 今天就遇到了一个,大致就是这么个代码. var a ;                         //全局变量 function fun() {     alert(a);               // a 在其它地方赋值,在这里操作,比如赋值为 0      ------------- 1     if(a==0)     {       

javascript变量:全局?还是局部?这个得注意

      在JS中,是没有块级作用域的       举两个个例子:       if语句块:     if (true){ var name='Ling'; } alert(name); 输出:Ling       for语句块;   for(var i=0;i<10;i++) { var name='Ling'; } alert(i); alert(name); 输出:10 输出:Ling 也就是说最后的结果都是window下全局变量: <span style="font-fam

JavaScript变量的作用域全解析_基础知识

变量作用域是程序中定义这个变量的区域. 先来看一段示例: /*  代码1  */ var scope = "global "; function checkScope() { var scope = "local "; function childCheck() { var scope = "childLocal "; document.write(scope); } function childUndefined() { document.wr

javascript中局部变量和全局变量的区别详解_javascript技巧

javascript有两种变量:局部变量和全局变量.当然,我们这篇文章是帮助大家真正的区别这两种变量. 首先,局部变量是指只能在本变量声明的函数内部调用.全局变量时整个代码中都可以调用的变量.当然,单单从字面上理解肯定是不清楚的,下面我详细的介绍下: 大家都知道,变量是需要用var关键字声明的.但是javascript中也可以隐式的使用变量,就是不用声明,直接使用.而且,千万注意,javascript把隐式声明的变量总是当成全局变量来使用的. 例如: 复制代码 代码如下: function my

理解JavaScript变量作用域更轻松_javascript技巧

JavaScript本身作为一门简单的语言,就其变量作用域问题一样令不少人头晕,这主要是因为JavaScript闭包的存在.本文不打算深入讲解JavaScript变量作用域问题(其实本人也没有能力能把这一话题讲的深入些),也不讲"闭包"话题,本文只讨论最实用的JavaScript作用域知识点. 一.JavaScript作用域分类 JavaScript就两种作用域:全局(window).函数级(function).函数级(function)不要理解为"块级(大括号{}级)&qu

JavaScript 变量 作用域 内存

知识点 1.变量及作用域 2.内存问题 JavaScript的变量与其他语言的变量有很大区别.JavaScript变量是松散型的(不强制类型)本质,决定了它只是在特定时间用于保存特定值的一个名字而已.由于不存在定义某个变量必须要保存何种数据类型值的规则,变量的值及其数据类型可以在脚本的生命周期内改变. 一.变量及作用域 1.基本类型和引用类型的值 变量可能包含两种不同的数据类型的值:基本类型值和引用类型值.基本类型值指的是那些保存在栈内存中的简单数据段,即这种值完全保存在内存中的一个位置.而引用

JavaScript 变量、作用域及内存_javascript技巧

JS变量是松散型的(不强制类型)本质,决定了它只是在特定时间用于保存特定值的一个名字而已; 由于不存在定义某个变量必须要保存何种数据类型值的规则,变量的值及其数据类型可以在脚本的生命周期内改变; 一 变量及作用域1.基本类型和引用类型 // JS变量包含两种不同的数据类型的值:基本类型值和引用类型值; // 1.基本类型值:保存在栈内存中的简单数据段;即这种值完全保存在内存中的一个位置; // 基本类型值包含:Undefined|Null|Boolean|Number|String; // 这些

Javascript变量作用域详解

         这篇文章主要是对Javascript变量作用域进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助 变量的作用域指的是变量的可见性,而生命周期则(存活期)则是从另一个角度考察变量.         JS中变量的作用域分为全局变量和局部变量,函数内定义的称为局部变量,函数外的称为全局变量.("函数外的称为全局变量"是相对的,另此处讨论的前提是用var显式声明的变量,函数内不用var定义的变量默认是全局变量,当然忽略var声明变量是不赞成的).    代码如