高程三笔记

185 阅读2分钟

3.基本概念

3.3 变量

  • 如果在函数中用var定义一个变量,name这个变量在函数退出后就会被销毁。
  • 省略var操作符,在函数内定义变量,是一个全局变量,严格模式下不允许未经声明的变量赋值,ReferenceError。

3.4 数据类型

ES5中有5种简单的数据类型 + 1种复杂数据类型:Undefined、Null、Boolean、Number、String + Object、

3.4.1 typeof

typeof(未定义的值) ==> "undefined"
typeof(布尔值) ==> "boolean"
typeof(字符串) ==> "string"
typeof(数值) ==> "number"
typeof(对象 或 null) ==> "object"
typeof(函数) ==> "function"
  • typeof是一个操作符,不是函数,可以省略括号
  • null被认为是一种空对象引用

3.4.2 Undefined

  • 声明变量未赋值的就是undefined
  • 未初始化赋值自动赋予的undefined和赋值undefined本质上是不同的
var message;
console.log(message == undefined) // true
var age = undefined;
console.log(message) // 产生错误
console.log(age)  // undefined

3.4.3 Null

  • null 表示一个空对象指针
  • 如果定义的变量准备存储对象,最好初始化为 null
  • undefined 是派生自 null 的
undefined === null  // false
undefined == null // true

3.4.4 Boolean

  • 空字符串、0、NaN、undefined、null 都是false
var yy = 'hello world';
var xx = Boolean(yy);

3.4.5 Number

  • 八进制字面值第一位必须是0,然后是07,有超出了07的数字,前导0会被忽略,按照十进制解析
  • 八进制在严格模式下无效,会导致js引擎报错
  • 十六进制是 0x 开头,后跟09以及AF,算数计算时都会转换成十进制
  • 保存浮点数需要的内存空间是保存整数的两倍
  • 极大或者极小值用e表示法表示
var a = 3.125e7 // 3.125 乘以 10的7次方
var b = 3e-17 // 0.0000000003
  • 数值范围
// isFinite() 函数来测试是否合法范围的数字
Number.MIN_VALUE = 5e-324 = -Infinity
Number.MAX_VALUE = Infinity
  • 浮点数最高17位小数,有误差
Number(null)  // 0
Number(undefined) // NaN
parseInt('') // NaN
parseInt("1234blue") // 1234
parseInt("10"16) // 按照16进制解析
parseFloat("0908.5") // 908.5

3.4.6 String

var num = 10;
num.toString()  // 默认十进制
num.soString(16) // 十六进制
var value = true
String(value)  // "true"

3.4.7 Object

var o = new Object();  // 不推荐省略括号
  • 每个Object实例都有下列属性和方法
    • constructor:保存着用于创建当前对象的函数。对于前面的例子而言,构造函数(constructor)就是 Object()。

    • hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例 的原型中)是否存在。o.hasOwnProperty("name")

    • isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型。

    • toString():返回对象的字符串表示。

    • valueOf():返回对象的字符串、数值或布尔值表示。通常与 toString()方法的返回值相同。

3.6 语句

  • for-in:语句是一种精准的迭代语句,可以用来枚举对象的属性