AI智能
改变未来

02-JavaScript中的变量(JavaScript基础学习笔记)

JavaScript中的变量

  • 变量的声明和赋值
  • 变量的命名
  • 变量的作用域
  • 数据类型
  • 不同进制之间的转换
  • 二进制和十进制的相互转换
  • 二进制和八进制的相互转换
  • JavaScript提供的进制转换方法
  • toString方法
  • parseInt方法

变量的声明和赋值

  变量在使用之前需要进行声明,声明变量使用var关键字:

// 声明一个message变量// var是关键字// message是变量名称var message;

  声明变量后就可以进行赋值和使用了:

// 声明了变量var message;// 对变量进行赋值message = \"Hello World!\";// 使用变量alert(message);

  也可以在声明变量的同时对变量进行赋值,这个过程叫做变量的初始化:

// 变量的初始化var message = \"Hello World!\";

  ECMAScript中的变量是松散的,所谓松散类型也就是说可以用来保存任何类型的数据。换句话说,每个变量仅仅是一个用于保存值的占位符而已。

  因为变量可以保存任意类型的数据,所以可以在程序中给变量赋予不同类型的值:

// 初始化为字符串var message = \"Hello World!\";// 赋予number类型的值message = 12;

注意:

  1. 当变量还没有初始化的时候,会默认保存为 undefined
  2. 通常不建议去修改变量所保存的值的类型

  可以使用一条语句同时声明多个变量,每个变量之间使用逗号隔开:

var message = \"hi\",found = false,age = 29;

变量的命名

  变量的名称也叫作标识符,所谓标识符就是指在JavaScript中定义的符号(如:变量名、函数名等)。定义标识符的时候需要遵守下面的规则:

  • 标识符可以由任意的大小写字母、数字、下划线(_)和美元符($)组成
  • 标识符不能以数字开头
  • 不能使用JavaScript中定义的保留字和关键字

JavaScript中的关键字

JavaScript中的保留字

  标识符除了需要遵守上面的规则外,还应该遵循一些规范:

  • 标识符的名字应该是见名思意的
  • 当单词超过两个的时候,应该遵循下面的规范驼峰命名:className
  • 下划线命名:class_name

规则和规范:

  • 标识符的命名规则是必须要遵守的,否则会报错
  • 规范是可以不遵守的,只是为了代码规范和可读性,建议按照规范去做

  在JavaScript中,标识符的命名是区分大小写的:

// 声明了一个变量 agevar age = 12;// 声明了另外一个变量 Agevar Age = 13;

注意:虽然字母的大小写可以区分变量,但是强烈不建议这样去命名两个变量

变量的作用域

  变量的作用域就是变量能够起作用的范围,比如下面的一段代码:

function test () {// 在函数中声明了一个变量var message = \"Hello\";// 在函数中调用messageconsole.log(message);}// 调用函数  控制台输出 Hellotest();// 在函数外部调用message,程序报错console.log(message);

  上面的案例中,使用var在函数中定义了一个局部变量message,在函数外部访问该变量就会报错。

  如果将函数中变量message前面的var关键字去掉,这个时候就相当于定义了一个全局变量,此时在函数外部就可以访问了:

function test () {// 在函数中声明了一个变量message = \"Hello\";// 在函数中调用messageconsole.log(message);}// 调用函数  控制台输出 Hellotest();// 在函数外部调用message,控制台输出 Helloconsole.log(message);

注意:虽然省略var可以定义全局变量,但是不推荐这么做:

  • 在局部作用域中定义全局变量很难维护
  • 导致不必要的混乱
  • 在严格模式下会导致抛出ReferenceError错误。

数据类型

  JavaScript提供了以下的数据类型:

  • 基本数据类型number:数字类型,包括浮点数和整数
  • boolean:布尔类型
  • undefined:如果变量声明的时候没有初始化,则系统默认赋值为undefined
  • string:字符串类型
  • null:null也是一种值,但逻辑含义是没有值
  • 复合数据类型
      object:对象

      JavaScript提供了 typeof 关键字来获取变量或者常量的类型。

    // 定义了一个整数var num = 12;console.log(typeof num);    // number// 定义了一个小数var num2 = 12.12;console.log(typeof num2);   // number// 定义了一个布尔类型var bool = true;console.log(typeof bool);   // boolean// 定义了一个字符串var str = \"str\";console.log(typeof str);    // string// 只声明未赋值一个变量var unde;console.log(typeof unde);   // undefined// 定义nullvar n = null;console.log(typeof n);  // object

    不同进制之间的转换

      进制是我们数数时候的一种习惯,我们习惯上使用的是十进制(逢十进一)。但对于计算机来说,它使用的是二进制(逢二进一),那是因为组成计算机的元件一般只有两种状态:0和1。但是二进制对于程序员来说阅读不是很方便、也不方便书写,所以有了八进制和十六进制。

    • 十进制: 0 ~ 9
    • 八进制: 0 ~ 8
    • 十六进制: 0 ~ 9、A ~ F(表示 10 ~ 15)
    • 二进制: 0 和 1

      这些进制之间是可以进行相互转换。

    二进制和十进制的相互转换

      十进制转换成二进制采用的是 除二取余 的方法:将一个十进制的数除以二,得到的商再除以二,以此类推直到商等于1或者0为止,然后倒取得到的余数即为二进制数的结果。比如将十进制的52转换成二进制的过程为:


      所以转换后的结果为:110100。

      二进制转换为十进制采用的是 2的n次方(n是对应的二进制从0开始的位置)乘以对应位置的数值,然后将这些数值相加 就得到对应的二进制的十进制数的表示,比如:将 110100 转换为十进制:

    注意: 十进制和八进制、十六进制的相互转换可以参照与二进制的转换方式,只不过将对应的2替换成8和16。

    二进制和八进制的相互转换

      一般情况下我们会直接使用二进制转换为八进制,转换规则是: 从右往左数,每三位一组,不足三位的用0补齐,将每一组数转成十进制数,这些数组合起来就是八进制数。 比如:将 110100 转换为八进制:


      八进制转二进制则是与上面相反的过程,即:将八进制的每一位使用十进制转换成二进制数:

    注意: 二进制和十六进制的相互转换和二进制与八进制的转换类似,只不过将三位一组改成四位一组。

    JavaScript提供的进制转换方法

      JavaScript也提供了一些进制转换的方法。

    toString方法

    var num1 = 072; // 八进制数,相对于十进制的58var num2 = 0xAF;    // 十六进制,相当于十进制的175console.log(num1.toString(10)); // 转换成十进制的字符串输出 58console.log(num2.toString(2));  // 转换成二进制的字符串输出 10101111

      toString中的参数是指定需要转换的进制数。

    parseInt方法

    var num1 = \"072\"; // 八进制数,相对于十进制的58var num2 = \"0xAF\";    // 十六进制,相当于十进制的175console.log(parseInt(num1, 8)); // 58console.log(parseInt(num2, 16)); // 175

      第一个参数是数字的字符串格式,第二个是指当前传入的字符串所表示的数字的进制数,返回的是十进制的整数。

  • 赞(0) 打赏
    未经允许不得转载:爱站程序员基地 » 02-JavaScript中的变量(JavaScript基础学习笔记)