JavaScript 学习笔记 01 (变量、数据类型)

一、变量

1、标识符

标识符是指变量、函数、属性的名字,或者函数的参数。

标识符的命名规则:

  1. 第一个字符必须是一个字母、下划线( _ )或者是一个美元符合( $ 
  2. 其它字符可以是字母、下划线、美元符合或者数字

在 JavaScript 规范中,建议是使用驼峰式命名规则,如:myCar、firstSecond、doSomething

2、声明一个变量

JavaScript 的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据。

var message

这行代码定义了一个 message 的变量,可以保存任何值。如果还未进行初始化,则保存一个特殊的值 undefined 。

var message = "hi"
message = 100

这两行代码定义并且初始化保存了一个字符串值 "hi" , 然后该值又被一个数字值 100 取代。这样完全是有效的。

 

二、数据类型

JavaScript 中的数据类型共6种

有5种基本数据类型:Undefined、Null、Boolean、Number和String,

还有一种复杂数据类型:Object。

1、Undefined 类型

Undefined 类型只有一个值,即特殊的 undefined 。在使用 var 声明变量未进行初始化时,这个变量的值就是 undefined,例如:

var message
alert(message == undefined) //true

不过,包含 undefined 值的变量与尚未定义的变量还是不一样的,例如

var message

alert(message) // "undefined"
alert(age)  // 产生错误,age is not defined

但是对未初始化的变量和未声明的变量进行 typeof 操作,都会返回 undefined 值

var message

alert(typeof message) // 'undefined'
alert(typeof age) // 'undefined' 不会报错

2、Null 类型

Null 类型同样只有一个值,这个特殊的值是 null。

从逻辑角度来看,null 值标识一个空对象指针,而这也正是使用 typeof 检测 null 值时返回一个 "object" 的原因。

var car = null

alert(car) // "null"
alert(typeof car) // "object"

3、Boolean 类型

Boolean 类型有两个值:true 和 false。

虽然 Boolean 类型的字面值只有两个,但是 ECMAScript 中所有类型的值都有与这两个 Boolean 值等价的值。要将一个值转换为对应的 Boolean 值,可以调用转换类型函数 Boolean()

数据类型 转换为 true 的值 转换为 false 的值
Boolean true false
String 任何非空字符串 ""(空字符串)
Number 任何非零数字 0和Nan
Object 任何对象 null
Undefined   undefined

 

这些转换规则对理解流程控制语句(如 if 语句)自动执行相对应 Boolean 转换非常重要,例如:

var message = "Hello world"

if ( message ) {
    alert("Value is true")
}

这个代码就会运行显示一个警告框,因为 message 被自动转换成了 true。

4、Number 类型

a、浮点数值

var a = 1.2345 

保存浮点数值需要的内存空间是整数值的两倍,因此 ECMAScript 会不失时机的将浮点数值转换为整数值。

var floatNum1 = 1.   // 小数点后面没有数字,解析为1
var floatNum2 = 10.0 // 整数,解析为10 

如果小数点后面带有6个零以上的浮点数值,讲转换为 e 表示法表示的数值

var a = 0.000000007  //  a = 7e-9

b、数值范围

alert(Number.MIN_VALUE) // 5e-324
alert(Number.MAX_VALUE) // 1.7976931348623157e+308

alert(Number.MAX_VALUE * 2)  // Infinity

能够表示最大和最小的数值保存在 Number.MAX_VALUE 和 Number.MIN_VALUE 中,如果超过这个数值,则会被转化为特殊的 Infinity 值和 -Infinity 。Infinity 值是不能够参与运算的。
可以使用 isFinite() 函数来判断这个数是否在最大值和最小值之间。

c、NaN

NaN 是一个特殊的数值,表示一个本来要返回数值的操作未返回数值的情况(这样就不会抛出错误了)。

NaN 有两个非同寻常的特点。

1、任何涉及 NaN 的操作都会返回 NaN。 

2、NaN 和任何指都不相等,包括NaN。

alert(typeof NaN)  // "number"
alert(NaN / 2)   // "NaN"
alert(NaN == NaN )  // "false"

d、数值转换

有三个函数可以把非数值转换成数值:Number()、parseInt()和parseFloat()。

Number()

  • 如过是 Boolean 值,true 和 false 分别转换成 1 和 0
  • 如果是数字值,则输出等于输入
  • 如果是 Null 值,则返回 0
  • 如果是 undefined,则返回 NaN
  • 如果是 字符串,则遵循以下规则:
    • 如果字符串为空,则返回0
    • 如果字符串只包含数字,包括带正负号的情况,则讲转换为十进制的数值
    • 如果字符串包含有效的十六进制格式,例如"0xf",则将其转换为相同大小的十进制数值
    • 如果字符串包含了别的,则返回NaN
var num1 = Number(true) // 1
var num2 = Number(false) // 0
var num3 = Number(12) // 12
var num4 = Number(000123) // 123
var num5 = Number(null) // 0
var num6 = Number("hello) // NaN
var num7 = Number("0xf")  // 15

parseInt()

忽略字符串前面的空客,找到第一个非空格字符。如果第一个字符不是数字符号或者负号,parseInt() 就会返回 NaN。 如果第一个字符是数字或者正负号,会解析第二个,直到解析完所有的字符或者遇到非数字字符。

var num1 = parseInt(true) // NaN
var num2 = parseInt("  012av") // 12
var num3 = parseInt("22.5") //22
var num4 = parseInt("") //NaN

parseInt() 函数存在第二个参数,转换时使用多少进制的。

var num1 = parseInt("0xAF",16) // 175
var num2 = parseInt("0xAF",10) // 0

var num3 = parseInt("AF",16) // 175
var num4 = parseInt("AF",10) // NaN

parseFloat()

parseFloat() 与 parseInt() 使用方法类似,唯一不同的是遇到第一个无效的浮点数数字为止。

var num1 = parseInt("22.5") //22
var num2 = parseFloat("22.5") //22.5

var num3 = parseFloat("22.55.22") // 22.55

5、String 类型

字符串是不可变的,字符串一旦创建,它们的值就不能改变。要改变的话必须要销毁原来的字符串,再创建一个新的赋值给它。

var lang = "Java"
lang = lang + "Script"  // "JavaScript"  是把新的字符串赋值给了lang

toString() 函数可以把一个值转换为字符串。

var age = 11
var ageAsString = age.toString()  // "11"
var found = true
var foundAsString = found.toString() // "true"

// 通常情况下不需要传递参数,如果要转换的是 Number 类型,可以加一个参数表示数值的基数

var num = 10
alert(num.toString())  // "10"
alert(num.toString(2))  // "1010"
alert(num.toString(8))  // "12"
alert(num.toString(10))  // "10"
alert(num.toString(16))  // "a"

6、Object 类型

Object 对象其实就是一组数据和功能的集合。对象可以通过执行 New 操作符后跟要创建的对象类型的名称来创建。

例如:var o = new Object()

后续会有专门的一章详细记录 Object ,这里就简单提及一下。

 

posted @ 2020-09-04 15:37  爱锁屏  阅读(170)  评论(0编辑  收藏  举报