JavaScript变量

目录

任务描述

相关知识

JavaScript中的变量

JavaScript中的变量的申明、初始化和赋值

JavaScript中的变量的作用域

编程要求

任务描述

变量可以看成语言中用来标记和存储数据的一种记号。

本关任务:定义并初始化一个全局变量 b ,定义一个局部变量 a ,并赋值,使其覆盖已有的全局变量 a 。在函数 variableTest 中增加代码,使函数输出100+10*c,其中 c 为输入,函数体见测试说明部分。

相关知识

JavaScript中的变量

不同于 C 或 Java,JavaScript 是一种动态类型的语言,即申明的时候不指定变量的数据类型,而在运行的时候根据变量的具体值动态的判断变量的数据类型。

JavaScript 的变量名以字母或者$或者_开头;变量名只能含有字母、数字、下划线和美元符号;大小写敏感;不能使用保留的关键字,如 html 、 var、function 等,这一条一定要记住,使用关键字造成的错误往往很难排除。

JavaScript中的变量的申明、初始化和赋值

  • 变量的申明 在 JavaScript 中,申明变量以关键字 var 开头,空一格后再接变量的名字;当然,可以一次申明多个变量,这时 var 只需要出现一次,多个变量名之间用英文的逗号隔开即可。如:
    var myvar1;    // 申明变量"myvar1"
    var myvar2,myvar3,myvar4;    // 一次申明三个变量
    
  • 变量的初始化和赋值 既然变量是用来记录数据的,如何给变量赋值呢?简单来说,和数学中一样,用一个等号连接变量名和变量的值即可,对于数字的赋值,直接用等号连接数字和变量,对于字符串的赋值,需要将字符串包含在英文双引号之中。

变量的第一次赋值称之为初始化。 你可能已经想到了,申明和初始化能一起进行吗?答案是肯定的,下面我们给出具体的例子:

var numberVar;     // 申明
numberVar = 1;     // 赋值为数字
var stringVar;     // 申明
stringVar = "I am a String";     // 赋值为字符串
var myNumber = 2;     // 申明的同时赋值为数字
var myString = "我是字符串";     // 申明的同时赋值
var number1 = 1,number2 = 2;     // 一次申明、赋值多个变量

需要注意的是,一个变量经过多次赋值,它的值为最后一次赋值的值。

JavaScript中的变量的作用域

变量的作用范围,或者说作用域,是指变量保持有效的范围,JavaScript 中的变量广义上来说分为局部变量和全局变量。

  • 全局变量 在函数外部申明的变量称为全局变量,全局变量的作用自申明的地方起,到整个 JavaScript 文件的末尾(包括这其中的所有函数的内部)。下面是一个例子:

    var wholeVar = 12; //申明并初始化一个全局变量
    function() {
      var localVar = 1; //局部变量
      console.log(wholeVar+localVar); //输出13
    }
    console.log(wholeVar); //输出12
  • 局部变量 局部变量是指申明在函数内部的变量,其作用域仅是本函数内部,在函数外不可用。 如果局部变量和全局变量的名字相同,那么在函数内部全局变量会被局部变量覆盖。

    var myVar = 1;    // 全局变量
    function scope() {
      var myVar = 2;    // 局部变量,覆盖了上面的值
      console.log(myVar);    // 输出2
    }
  • 申明提前 JavaScript 局部变量有一个很重要的概念,叫申明提前,我们先来看一个例子。

    var wholeVar = 1;    // 全局变量
    function myTest() {
      console.log(wholeVar);
      var wholeVar = 2;
      console.log(wholeVar);
    }

关于第三行的输出,你的第一反应一定是1吧,正确答案是undefined。这是因为在函数内部,变量不论在何处申明,都应该看成是在最开始申明(赋值不会看成是在最开始赋值,这就是不输出2的原因),这就是“申明提前”,所以,以上代码等价于:

var wholeVar = 1;
function myTest() {
    var wholeVar;    // 申明提前了,覆盖了全局变量
    console.log(wholeVar);    // 上面只申明,没赋值
    wholeVar = 2;
    console.log(wholeVar);
}

这个地方不太好理解,所以我们在编程的时候局部变量的名字最好不要和全局变量冲突。

编程要求

本关的编程任务是补全右侧代码片段中 Begin 至 End 中间的代码,具体要求如下:

  • 定义一个局部变量 a ,并赋值使其覆盖已有的全局变量 a ;
  • 定义一个全局变量 b 并初始化之;
  • 上面两步必须使得函数 variableTest 返回100+10*c, c 为输入;
  • 具体请参见后续测试样例。
var a = 1;
// 请在此处编写代码
/********** Begin **********/
var b = 100;
/********** End **********/
function variableTest(c) {
    /********** Begin **********/
    var a = 10;
	/********** End **********/
    return a*c+b;
    

}

  • 29
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值