前端基础复习-Javascript基本类型

#数据类型

unfineded,null,String,Number,Boolean,String,Object,Symbol。变量的类型可由typeof运算符得到。

Undefined

undefind表示未定义使用var声明变量但未对其加以初始化时,这个变量的值就是undefined

1
2
var a;
console.log(a)//undefind

其他典型用法

  • 调用函数时,应该提供的参数没有提供,该参数等于undefined。

  • 对象没有赋值的属性,该属性的值为undefined。

  • 函数没有返回值时,默认返回undefined。

    1
    2
    3
    4
    5
    6
    7
    8
    function f(x){console.log(x)}
    f() // undefined

    var o = new Object();
    o.p // undefined

    var x = f();
    x // undefined

Null

null时一个空对象指针表示“没有对象”,即该处不应该有值。使用typeof null时会返回object
典型用法

  • 作为函数的参数,表示该函数的参数不是对象。

  • 作为对象原型链的终点。

    1
    2
    Object.getPrototypeOf(Object.prototype)
    // null

Boolean

Boolean()可以改变类型,其规则是

转变为true:

  • Boolean: true
  • String: 任何非空字符串
  • Number: 任何非零数字(包括无穷大)
  • Object: 任何对象
  • Undefined: n/a(not applicable)

转变为false:

  • Boolean: false
  • String: “”(空字符串)
  • Number: 0和NAN
  • Object: null
  • Undefined: undefined

例子:

1
2
3
4
var message = "hello"
if(message) {
alert("value is true")//字符串被转为true,所以成功输出
}

Number

1
2
3
var a = 10 //十进制数
var b = 070//八进制56,严格模式不可用
var c = 0xA //十六进制10

e表示法

用e表示法白哦是的数值等于e前面的数乘e后面的数的10次幂

1.24e10 = 1.24*10^10

NaN

NaN 非数值,用来表示一个本来要返回数值的操作数未返回数值的情况。它有两个特点

  • 任何涉及Nan的操作都会返回NaN
  • NaN与任何值都不相等包括自身

alert(NaN == Nan) //false

isNaN()接受一个参数,可以检测参数是不是NaN。当接收到参数后,函数会尝试将这个值转换为数值,若不能转换则返回true。

1
2
3
4
5
alert(isNaN(10))//false

alert(isNaN("red"))//true

alert(isNaN(true))//false,转换为1

数值转换

有三个函数可以把非数值转换为数值

  • Number()
  • parseInt()
  • parseInt()

Number转换的规律

  • 如果是布尔值,true为1,false为0
  • 如果是null,则返回0
  • 如果是undefined则返回NaN
  • 如果是字符串:
    • 当字符串只有数字则将其转换为十进制数。
    • 当字符串中包含有效的浮点格式,则换为浮点数
    • 当字符串中有有效的十六进制格式,则将其转换为相同大小的十进制数
    • 字符串空,变为0
    • 如果包含上述格式之外的字符,变为NaN

parseInt会忽略字符前的空格,直到找到第一个费控个字符,如果不是数字字符或符号,则返回NaN。如果是则解析第二个字符,直到结束或没有数字字符。

1
2
3
4
var number1 = parseInt("1234blue");//1234
var number2 = parseInt("");//NaN
var num3 = parseInt("12.4")//12
avr num3 = parseInt("0xf")//15十六进制

parseInt还可以制定第二个参数来决定转换时采用的进制

var num = parseInt(“0xAF”, 16); //175

String

String类型用于表示由0或多个16位Unicode字符组成的序列(字符串)。字符串可以用 ‘’ 或 “” 表示,但不可以混用。ECMAScript中字符串不可改变,必须要销毁原来的字符串,再用一个新的去填充变量。

可以用toString()方法把值转换为字符串,接受一个参数指定进制

1
2
3
4
5
var num = 10;
alert(num.toString())//"10"
alert(num.toString(2))//"1010"
alert(num.toString(8))//"12"
alert(num.toString(16))//"a"

Object

一组数据和功能的集合,用new创建

1
var o = new Object()

Object的每个实例都具有下列方法。

  • constructor:保存着用于创建当前对象的函数。

  • hasOwnProperty(propertyName): 检查给定属性是否在当前对象实例

  • isPrototypeOf(object): 检查传入的对象是否为当前对象的原型。

  • propertyIsEnumrable(propertyName): 用来检查给定的属性能否用for-in
    枚举

  • toLocaleString(): 返回对象的字符串表示,该字符串与执行环境的地区对应。

  • toString(): 返回对象的字符串表示
  • valueOf(): 返回对象的字符串,数值或布尔值表示