JS变量

  • 变量的声明

    1.使用var多次声明同一个变量,是合法的,不会因此语法的错误;重复的声明并初始化变量值,只是相当于普通的赋值语句。

    2.读取一个未声明的变量值,js会产生一个错误。

    3.尝试给一个未经var 声明的变量赋值,js会隐式声明该变量,隐式声明的变量被创建为全局变量。

    4.无论是全局变量还是局部变量,最好都使用var进行声明。

          var i = 12;        var i = 13;    //相当于赋值语句 i = 13        alert(i);        k = 34;        //隐式声明为一个全局变量         alert(k);        alert(j);        //产生一个错误

  • 变量的作用域

  全局(global)变量的作用域是全局的,即在js代码中处处有定义。

  局部(local)变量的作用域是局部性的,只在特定的范围内,比如函数内部定义的变量,函数的参数变量,这些变量的作用范围是局限在函数的内部的。

  1.声明全局变量可以不适用var 关键字,局部变量则必须使用var关键字来声明,为了避免不必要的麻烦,养成所有的变量都使用var关键字来声明。

  2.变量的定义没有块级作用域

    在函数中声明的所有的变量,无论是在哪里声明的(只要是在函数内部),在整个的函数中都是有声明的

function f(){            for (var i=0;i<10;i++){                    //此处i在for循环中的变量                    if(i==5){                     var k = 5;                       //此处k在if块中定义                         break;                 }            }            alert("i=" + i + "----k =" + k);//只要是在函数内部的变量我们都可以使用它

        }

  引发思考的例子

    var scope = "global";        function f2(){            alert(scope);            //提示undefined            var scope = "local";            alert(scope);            //提示local

            }

  解析:第一次alert提示scope undefined ,而我们又定义了全局变量scope?????

     由于变量的定义没有块级作用域这个规则的限制,局部变量在整个函数内部都是有定义的,这就意味着整个函数体中都隐藏了同名的全局变量,

    第一次alert, 局部变量scope是已经被声明了,但是没有初始化值,所以提示undefined;

    而第二次的alert,是在scope = "local" 之后的,也就是局部变量scope完成了初始化,所以提示为local。

   该例子中的代码相当于

    

var scope = "global";        function f2(){            var scope;    //声明局部变量scope,未初始化            alert(scope);                      scope = "local";//初始化scope            alert(scope);            

        }

  • 未定义的变量和未赋值的变量

  未定义的变量:指没有声明并且没有初始化的变量,尝试读取这种变量会产生一个错误。

       注: 这里要区分开没有声明但初始化了的变量,这种变量不会引起错误,程序会在全局变量中隐式的声明该类变量。

  未赋值的变量:指已经声明但没有初始化的变量,尝试读取该类变量将得到一个默认值undefined.

  

时间: 2024-10-28 19:02:23

JS变量的相关文章

js 变量提升+方法提升

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> var a = 100; function t() { alert(a); var a = 10; } t(); //输出结果为undefine

js变量作用域

? 1 2 3 4 5 6 7 8 9 10 for(var i =0;i<100;i++)   {        } alert(i);//100 if(true){     var i="91d";   } alert(i);//91d ? 1 2 3 4 5 6 function add(ad1,ad2){   sum=ad1+ad2;   return sum;//如果没有用var声明局部变量,会提升为全局的变量 } alert(add(3,5)); alert(&quo

js变量详解

1.变量的声明 1)js变量有局部变量和全局变量之分,无论是局部变量还是全局变量最好都使用var声明 2)如果没有使用var声明一个变量,js会隐式声明该变量,且该变量为全局变量 3)可以使用var多次声明一个变量 4)尝试读取一个未声明的变量,js会报错 5)尝试读取一个未初始化的变量,js将得到一个默认值undefined 举例: var i = 12; var i = 34; //不会报错,只是对i进行重新赋值 alert(i); //得到34 j = 56; //隐式声明一个全局变量 a

JS 变量详解

关于JS中的变量 JS中的变量是松散类型的,可以存储任何类型的数据. JS变量松散类型的本质,决定了变量只是在特定时间用于保存特定值的一个名字而已. 由于不存在定义某个变量必须要保存何种数据类型的值的规则,变量的值及其数据类型可以在脚本的生命周期内改变. 用var关键字声明的变量,未经初始化时,保存的是一个特殊的值——undefined. 变量初始化仅仅是给变量赋一个值. 可以在一条语句中声明多个变量,初始化或不初始化皆可,变量之间用逗号隔开. 用var关键字声明的变量是定义该变量的作用域中的局

js变量以及其作用域详解

一.变量的类型  Javascript和Java.C这些语言不同,它是一种无类型.弱检测的语言.它对变量的定义并不需要声明变量类型,我们只要通过赋值的形式,可以将各种类型的数据赋值给同一个变量.例如: i=100;//Number类型 i="variable";//String类型 i={x:4};//Object类型 i=[1,2,3];//Array类型 JS的这种特性虽然让我们的编码更加灵活,但也带来了一个弊端,不利于Debug,编译器的弱检测让我们维护冗长的代码时相当痛苦. 二

jsp中把js变量赋给java变量,或者将java变量赋给js变量怎么做?

在jsp中经常会遇到把js变量赋给java变量,或者将java变量赋给js变量的情况,在此将通用的处理方法小结如下: java变量传给js好办,var a=”<%=javaParam%>“;注意要将引号”"加上: js变量给java稍微复杂点,一般是在表单中用一个的隐藏表单元素,然后在脚本中将js变量值赋给它: var jsParamValue=’aaaa’;form1.jsParam.value=jsParamValue; 然后就可以request.getPrameter(“jsP

详解js变量、作用域及内存

详解js变量.作用域及内存 来源:伯乐在线 作者:trigkit4 原文出处: trigkit4 基本类型值有:undefined,NUll,Boolean,Number和String,这些类型分别在内存中占有固定的大小空间,他们的值保存在栈空间,我们通过按值来访问的. JavaScript 1 2 (1)值类型:数值.布尔值.null.undefined. (2)引用类型:对象.数组.函数. 如果赋值的是引用类型的值,则必须在堆内存中为这个值分配空间.由于这种值的大小不固定(对象有很多属性和方

JavaScript学习笔记——js变量的布尔值

typeof(1): numbertypeof(NaN): numbertypeof(Number.MIN_VALUE): numbertypeof(Infinity): numbertypeof("123"): stringtypeof(true): booleantypeof(window): objecttypeof(Array()): objecttypeof(function(){}): functiontypeof(document): objecttypeof(null)

【repost】 JS变量重复声明以及忽略var 声明的问题及其背后的原理

JS的容错率很高,一些其他语言常见的小错误JS都能大度得包容,比如给一个方法传入超出预计的参数.在声明变量之前使用该变量(变量的声明提升解决了这个问题)等等,这里我们就要解剖一下JS变量重复声明以及当我们忽略var使用 a=2来声明变量时a为全局变量的问题: [javascript] view plain copy //第一段代码 var a = 2; var a = 3; alert(a);//3 //第二段代码 <span style="font-size:18px;">

js变量及其作用域

Javascript和Java.C这些语言不同,它是一种无类型.弱检测的语言.它对变量的定义并不需要声明变量类型,我们只要通过赋值的形式,可以将各种类型的数据赋值给同一个变量 一.js变量的类型及申明方式 var i=100;//Number类型 var i="variable";//String类型 var i=false;//boolen类型 var i={x:4};//Object类型 var i=[1,2,3];//Array类型 前三种是基本类型,后两种为引用类型 1.引用类