精华内容
下载资源
问答
  • JavaScript 变量

    2019-02-27 21:35:37
    JavaScript 变量 JavaScript 变量名称的规则: 声明(创建) JavaScript 变量JavaScript 变量赋值 向未声明的 JavaScript 变量赋值 重新声明 JavaScript 变量 JavaScript 变量 正如代数一样,...

    目录

    JavaScript 变量

    JavaScript 变量名称的规则:

    声明(创建) JavaScript 变量

    向 JavaScript 变量赋值

    向未声明的 JavaScript 变量赋值

    重新声明 JavaScript 变量

     


    JavaScript 变量

    正如代数一样,JavaScript 变量用于保存值或表达式。

    可以给变量起一个简短名称,比如 x,或者更有描述性的名称,比如 length。

    JavaScript 变量也可以保存文本值,比如 carname="Volvo"。

    JavaScript 变量名称的规则:

    • 变量对大小写敏感(yY 是两个不同的变量)
    • 变量必须以字母或下划线开始

    注释:由于 JavaScript 对大小写敏感,变量名也对大小写敏感。

     

    声明(创建) JavaScript 变量

    在 JavaScript 中创建变量经常被称为“声明”变量。

    您可以通过 var 语句来声明 JavaScript 变量:

    var x;
    var carname;
    

    在以上声明之后,变量并没有值,不过您可以在声明它们的同时向变量赋值:

    var x=5;
    var carname="Volvo";
    

    注释:在为变量赋文本值时,请为该值加引号。

    向 JavaScript 变量赋值

    通过赋值语句向 JavaScript 变量赋值:

    x=5;
    carname="Volvo";
    

    变量名在 = 符号的左边,而需要向变量赋的值在 = 的右侧。

    在以上语句执行后,变量 x 中保存的值是 5,而 carname 的值是 Volvo

    向未声明的 JavaScript 变量赋值

    如果您所赋值的变量还未进行过声明,该变量会自动声明。

    这些语句:

    x=5;
    carname="Volvo"; 
    

    与这些语句的效果相同:

    var x=5;
    var carname="Volvo"; 
    

    重新声明 JavaScript 变量

    如果您再次声明了 JavaScript 变量,该变量也不会丢失其原始值。

    var x=5;
    var x; 
    

    在以上语句执行后,变量 x 的值仍然是 5。在重新声明该变量时,x 的值不会被重置或清除。

     

    展开全文
  • JavaScript变量

    千次阅读 2020-11-12 17:38:56
    JavaScript变量1. 变量声明规则2. var2.1 var声明变量2.2 var变量作用域2.3 var变量提升3. let3.1 let的区别4. const4.1 const的区别5. 用var还是let还是const? 变量用来存储数据,在JavaScript中,变量是松散类型...


    变量用来存储数据,在JavaScript中,变量是松散类型的,所以变量可以用来保存任何类型的数据。
    有3个关键字可以用来声明变量:var、let、const。

    1. 变量声明规则

    1. 区分大小写,也就是说name和Name是2个不同的变量。
    2. 变量名第一个字符必须是字母、下划线( _ )、美元符号( $ ),首字符不能为数字。
    3. 变量名不能为关键字、保留字,如do、in、if等等。

    2. var

    在ES6之前,都是使用var来声明变量

    2.1 var声明变量

    要声明变量需要在var后面跟上一个变量名,如:

    var a;
    

    这段代码通过var声明了一个名字为a的变量,它可以保存任意的数据类型,因为没有给他赋值,他的值默认为undefined。
    可以在声明变量的时候直接赋值,如:

    var a = 123;
    var b = '你好';
    

    这段代码声明了变量a,赋值为Number类型的123和声明了变量b赋值为String类型的你好。

    2.2 var变量作用域

    1. 全局变量

    通过var声明的全局变量,是在window对象中的,如:

    var a = 1;
    console.log(a); // 1
    console.log(window.a); // 1
    

    2. 局部变量

    也可以在函数内部中声明变量,这样他就会成为函数的局部变量,在函数退出时变量会被销毁,如:

    function a() {
    	var b = 123;
    	console.log(b); // 123
    }
    a();
    console.log(b); // 出错,会提示b没有定义。
    

    在上面代码中,在a函数内部中声明了一个变量b,在执行完函数后,变量b会被销毁,所以最后一句代码会报错,提示b没有定义。

    3. 其他

    在函数内,是可以访问全局变量的,如:

    var num = 123;
    function a() {
    	console.log(num); // 123
    }
    a();
    

    在全局变量和局部变量名相同的情况下,会优先使用最近作用域当中的局部变量,如果当前作用域中没有这个变量,那么它会向上一层层的作用域中寻找,直到找到变量为止,如果到了window对象还没有这个变量,那么会报错,如:

    var num = 123;	// 全局变量
    function a() {
    	var num = 222;	// 局部变量
    	console.log(num);	// 222 输出的局部变量
    }
    function b() {
    	console.log(num);	// 123 输出的全局变量
    }
    function c() {
    	console.log(xx);	// 报错 没有找到这个变量
    }
    a();
    b();
    c();
    

    上面代码,有一个全局变量num,函数a中,因为也声明了局部变量名叫num,所以函数a中输出的是222。函数b中,没有名为num的局部变量,所以向上寻找,直到在全局变量中找到了num,输出为123。函数c中,并没有声明局部变量xx,向上寻找也未寻找到名为xx的变量,所以会报错,提示变量xx未定义。

    2.3 var变量提升

    function a() {
    	console.log(b);
    	var b = 123;
    	console.log(b);
    }
    a();
    

    看到这段代码,第一反应是,函数a中的第一句console.log(b);肯定会报错,因为变量b是在这一句的下面才声明的,而且全局变量中也没有b,其实并不是这样的,因为通过var声明的变量会自动把声明都放在作用域的最顶部,同等于以下代码:

    function a() {
    	var b;
    	console.log(b); // undefined
    	b = 123;
    	console.log(b);	// 123
    }
    a();
    

    函数a中,第一句就直接声明了变量b,没有给他赋值,所以第一句输出语句输出的值是undefined,在下面才给它赋值为123,所以第二句输出语句输出的值为123。

    3. let

    let是es6中新出的声明变量的关键字,他和var基本上一样,但是也有一些区别。

    3.1 let的区别

    1. let是块级作用域,而var是函数作用域。
    2. let没有变量提升。
    3. let声明的全局变量不在window对象中。

    这是一个块级作用域的例子:

    if (true) {
    	var a = 11;
    	let b = 22;
    	console.log(a); // 11
    	console.log(b); // 22
    }
    console.log(a); // 11
    console.log(b); // 报错 没有定义
    

    首先可以看到,if代码块中通过var和let各声明了一个变量a和b。

    a因为是通过var声明的,是函数作用域,然而if并不是函数,所以a会成为全局变量,所以if中和下面的代码输出a的值都为11。

    b通过let声明,在if代码块中属于局部变量,作用域只在if代码块中,所以if代码块中输出b的值为22,最下面输出b的值会报错。

    再看一个let没有变量提升的例子:

    function a() {
    	console.log(b); // Cannot access 'b' before initialization
    	let b = 11;
    }
    a();
    

    a函数中,在声明b之前输出b值,报错提示不能在声明b之前使用b,代表了let声明的变量是没有变量提升的。

    let声明的全局变量不在window对象中例子:

    var a = 1;
    let b = 2;
    console.log(window.a); // 1
    console.log(window.b); // undefined
    

    可以看到,通过var声明的变量是在window对象中的,通过let声明的变量不在window中,所以输出结果为undefined。

    4. const

    const也是es6新出的一种声明变量的关键字,它和let基本上一样,但是也有一些区别。

    4.1 const的区别

    1. 通过const声明变量的时候必须赋值。
    2. 不能修改const的值。

    通过const声明变量的时候必须赋值,看一个例子:

    const a; // 报错 Missing initializer in const declaration
    const a = 1; // 正确
    

    不能修改const的值,例子:

    const a = 1;
    a = 2; // 报错 Assignment to constant variable.
    

    注意、注意、注意、 不能修改const的值是指的不修改他的指向的变量的引用,如果你的值是一个对象,那么是可以修改这个对象的内部属性的,因为他的指向没有变,例如:

    const a = {
    	b: 2,
    }
    a.b = 3
    
    const c = {}
    c = {} // 报错 Assignment to constant variable.
    

    这个例子声明了一个对象a,并且修改了它的内部属性b,a的指向没有变,这样并不违反const的规则。
    下面还声明了一个对象c,并且重新给他赋值了一个对象,这样指向会改变,违反了const规则并报错。

    5. 用var还是let还是const?

    有些人可能会懵了,3个到底要用哪一个?
    根据现在的开发者普遍的情况,总结如下:

    1. 不再使用var。
      因为新出的let和const,有明确的作用域,声明位置等,为了提高代码的可读性,稳定性,推荐不要再使用var。
    2. 优先使用const,其次使用let。
      使用const会更有信心的知道这个值不会变,有利于提高代码的稳定性,预防一些不可预测的问题出现,如果你知道某个值在未来会被修改,那么使用let。
    展开全文
  • javascript变量

    2011-05-27 14:40:00
    1.javascript变量是无类型的,这意味着javascript的变量可以存放任何类型的值,例如,在javascript中,可以把一个数值赋值给一个变量,然后再把一个字符串赋给它,这完全合法。  var i = 10;  i = ...

    变量
    变量类型
    1.javascript变量是无类型的,这意味着javascript的变量可以存放任何类型的值,例如,在javascript中,可以把一个数值赋值给一个变量,然后再把一个字符串赋给它,这完全合法。
        var i = 10;
        i  = "hello";
    有一个特性是与javascript缺少类型规则相关,即在必要时javascript可以快速自动的将一种
    类型的值转换成另一种类型(数据类型转换)。


    2.变量声明
    在javascript程序中,使用一个变量之前,必须先声明,变量使用var 关键字声明,一个var 关键字可以同时声明多个变量,而且可以将声明变量和变量初始化绑定到一起。
    var i = 0; message = "hello";
    var 声明的变量未赋值时,它的初始值为undefined

    3.重复声明变量和遗漏的声明
    在javascript中使用var语句多次声明同一个变量是合法的。如果重复的声明有一个初始值,那么它担当的不过是一个赋值语句的角色。
    如果尝试读一个未声明的变量值,javascript会生成一个错误。
    如果尝试给一个未用var声明的变量赋值,javascript会隐式声明该变量,但是隐式声明的变量总是被创建为全局变量。

    4.变量的作用域
    一个变量的作用域(scope)是程序中定义这个变量的区域。全局变量的作用域是全局的。局部变量作用域是局部的。在函数体内部,局部变量的优先级比同名的全局变量高。 例如
    var scope = "global";
    function checkscope(){
        var scope = "local";
        document.write(scope);
    }
    checkscope();

    5.没有块级作用域
    和C++,JAVA不同,javascript没有块级作用域函数中声明的所有变量,无论在哪声明,在整个函数中它们都是有定义的 ,如下面代码中,变量I,j,k的作用域是相同的。它们3个在整个函数体都有效。
    例子1
    function test(s){
        var i = 0;                        //i在整个函数中有定义
        if(typeof s == "object"){
            var j = 3;                    //j到处都有定义,不仅限于这个代码块
            for(var k =0;k<10;k++){
                document.write(k);        //k到处都有定义,不仅限于该循环
            }
            document.write(k);            //k仍旧有定义,输出10
        }
        document.write(j);                //j仍旧有定义,输出3
    }
    test(new String());

    例子2
    var scope = "global";
    function f(){
        alert(scope);            //显示"undefined",而不是"global"
        var scope = "local";    //变量在此处被初始化,但到处都有定义
        alert(scope);            //显示"local";
    }
    f();

    例子2等价于
    var scope = "global";
    function f(){
        var scope;
        alert(scope);            //显示"undefined",而不是"global"
        var scope = "local";    //变量在此处被初始化,但到处都有定义
        alert(scope);            //显示"local";
    }
    f();

    6.变量的基本类型和引用类型
    基本类型(数值,布尔,null,undefined)在内存中有固定的大小,对象,数组,函数属于应用类型。
    字符串是一个特例。

    全局对象
    当javascript解释器开始执行时,它首先要做的事情之一就是在执行任何javascript代码前,创建一个全局对象(global object) 。这个对象的属性就是javascript程序的全局变量。当声明一个全局变量时,实际上是做的是定义了那个全局对象的的一个属性。 在顶层代码中(不属于函数的javascript代码),你可以使用关键字this来引用这个全局对象。在函数内,this则另有用途。
    在客户端javascript中,Window对象代表浏览器窗口。它是包含在该窗口中所有javascript的全局对象。

    局部变量:调用对象
    全局变量是特殊的全局对象的属性,局部变量也是一个对象的属性,这个对象被称为调用对象(call object)。在执行一个函数时,函数的参数和局部变量是作为这个调用对象的属性存储的。用一个完全独立的对象来存储局部变量使javascript可以防止局部变量覆盖同名的全局变量的值。

    javascript的执行环境
    一个执行环境就是所有javascript代码段执行时所在的环境,这个环境的一个重要部分就是定义变量的对象。因此,运行在不属于任何函数的javascript代码的环境使用的是全局对象,所有的javascript函数都运行在自己独有的执行环境,而且具有自己的调用对象,在调用对象中定义了局部变量。

    深入理解变量的作用域
    从词法结构上,全局变量具有全局作用域,而函数中声明的变量具有局部的作用域。如果一个函数定义嵌套在另一个函数中,那么嵌套的函数中声明的变量就具有嵌套的局部作用域。

    展开全文
  • javaScript 变量

    2014-12-10 22:03:23
    javaScript是弱类型的脚本语言,根据赋值决定变量类型,比如整形 :var a=1; String:var str1=“asd” 变量命名规则: 1、以字母、下标“_”、或“$”开头 2、变量名长度不能超过255 3、变量名中不允许使用空格 4...

    javaScript是弱类型的脚本语言,根据赋值决定变量类型,比如整形 :var a=1;  String:var str1=“asd”

    变量命名规则:

    1、以字母、下标“_”、或“$”开头

    2、变量名长度不能超过255

    3、变量名中不允许使用空格

    4、不能使用脚本语言中的关键字、保留符作为变量名

    5、变量名区分大小写, javascript区分大小写,不区分  '    、  " 。

    全局变量

    在方法外部声明的变量、或在方法内部没有加var关键字声明的变量

    局部变量

    方法内部声明的

    数据类型:

    基本数据类型:Number、Boolean、String、Undefined、Null

    引用类型:Object类型(对象,数组,Date。。。)

    Number:整数、小数(最高精度为小数点后17位)、NaN、Infinity、-Infinity(+-无穷)。

    NaN:比如:var c=parseInt("asd");

    Undefined:变量声明但未赋值。

    Null:表示一个空的对象引用。

    数组:var arry=[1,2,3];   日期:var dates=new Date();  对象:var object={ };

    typeof判断数据类型


    数据字动转化 

    ==:可以经过自动转化,只比较数值。===:可以经过自动转化,只比较数值,还要比较数据类型

    数组

    js数组类似于java容器,长度可变,元素类型也可以不同,var arr=[ ];  var arr=new Array();常用方法:push、pop、shift(在数组前弹出)、unshift(在数组前插入)、splice(第一个参数:起始位置,第二个参数:截取的个数;第三个参数以后:表示追加的新元素  操作数组本身、slice(截取,左闭右开,不操作数组本身、concat(合并,不操作数组本身)、join(不操作数组本身,在每个元素之间插入内容)、sort(正序排序)、 reverse(倒序)

    Object

    是所有类的基础类,var obj=new Object(); 

    var obj={ };
            obj.name='lmy';
            obj.age=12;
            obj.say=function(){
                alert("hello");
            }




    展开全文
  • JavaScript 变量

    千次阅读 2007-03-28 20:33:00
    JavaScript变量是无类型(untype)的,这意味着JavaScript变量可以存放任何类型的值。如:在JavaScript中可以先把一个数值赋给一个变量,然后再把一个字符串赋给这个变量。而且JavaScript可以在必要的时候自动将一...
  • JavaScript变量提升

    千次阅读 2020-03-12 11:34:40
    JavaScript变量提升 在JavaScript中变量声明与函数声明都会被提升到作用域顶部,优先级依次为:变量声明 函数声明 变量赋值 变量提升 var的变量提升 console.log(a); // undefined var a = 1; consol...
  • javascript变量命名规则

    千次阅读 2019-05-22 21:00:49
    javascript变量命名规则: 以字母、下划线、$开头; 区分大小写; 由字母、下划线、$或数字组成; 不能使用关键字和保留字
  • JavaScript 变量提升

    千次阅读 2016-12-15 09:49:33
    回归基础: JavaScript 变量提升(Hoisting)变量声明是所有的编程语言中最基础部分之一。然而,JavaScript 有一个怪异点,称之为变量提升(hositing),这个能够让一个看上去无关紧要的声明变成一个小bug。这篇文章...
  • JavaScript变量赋值

    2016-05-30 15:18:19
    javascript变量赋值: a="333"; b="hhh"; 诸如此类就是javascript的变量,给变量赋值有以下种3方法: 1.直接赋值: a="333"; b="hhh"; 2.先声明变量,后给变量赋值 var a; var b; a="333"; b="hhh"; ...
  • javascript 变量基础

    2015-08-28 09:51:56
    1.javascript变量是无类型的,这意味着javascript的变量可以存放任何类型的值,例如,在javascript中,可以把一个数值赋值给一个变量,然后再把一个字符串赋给它,这完全合法。  var i = 10;  i = "hello"; 有...
  • JavaScript变量 JavaScript使用var关键字声明变量。声明变量的5种常规用法如下: var a; //声明单个变量。var关键字与变量名之间以空格分隔 var b, c; //声明多个变量。变量之间以逗号分隔 var d = 1; //声明...
  • JavaScript变量,数据类型,声明变量

    千次阅读 2018-04-21 17:32:38
    1. JavaScript变量 变量名必须以字母或下划线("_")开头变量也能以 $ 和 _ 符号开头(不过我们不推荐这么做)变量名称对大小写敏感(y 和 Y 是不同的变量)变量可以包含数字、从 A 至 Z 的大小写字母...
  • Javascript变量作用域、变量提升

    千次阅读 2017-09-19 08:18:31
    Javascript变量、变量提升以及作用域 执行环境对js编程的重要性不容忽视,理解其执行的原理,将有效提升编程素养。
  • JavaScript变量声明那些事儿

    千次阅读 2015-06-01 17:42:02
    JavaScript变量声明、JavaScript变量前置、JavaScript全局变量
  • javascript变量之声明

    2014-10-28 14:14:06
    javascript变量根据命名规范可以提高脚本的可读性,javascript变量的良好声明习惯也是提高开发效率的利器之一。 JavaScript是一种弱类型语言,在声明变量时,不需要指定变量的类型,变量的类型由赋给变量的值确定...
  • JavaScript变量的定义及类型定义变量JavaScript的数据类型undefinednullbooleannumberstringobject 定义变量 JavaScript使用 var来定义变量,多个变量名之间用逗号隔开。定义变量是不为其赋值则缺省为undefined,...
  • java代码是运行在服务器上的,返回的值只是静态的存在于...java变量传递给javascript变量,这个比较简单,就是平时的普通方法就好: var cnt = <%=number%>; 注意别漏掉等号!这个没什么问题。 eg: <...
  • 《JavaScript权威指南》中指出:JavaScript变量在声明之前已经可用,JavaScript的这个特性被非正式的称为声明提前(hoisting),即JavaScript函数中声明的所有变量(但不涉及赋值)都被“提前”至函数的顶部。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 61,733
精华内容 24,693
关键字:

javascript变量

java 订阅