IO通读JS高程系列(2)--基本概念

195 阅读3分钟

严格模式ECMASCRIPT中引入严格模式的概念。严格模式是为javascript定义一种不同的解析与执行模式。在严格模式下,ECMASCRIPT3中的一些不确定行为将会。 要在整个脚本中启用严格模式,可以在顶部添加如下代码: 

"use strict";

一,变量

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

ecmascript有5种简单的数据类型(也


称为基本数据类型): 

underfined,null,boolean,number,string

typeof操作符:鉴于ecmascript是松散类型的。因此需要有一种手段来检测给定变量的数据类型。

"undefined"——如果这个值未定义;
 "boolean"——如果这个值是布尔值;
 "string"——如果这个值是字符串;
 "number"——如果这个值是数值;
 "object"——如果这个值是对象或 null;
 "function"——如果这个值是函数

 重点: 

 typeof 操作符会返回一些令人迷惑但技术上却正确的值。比如,调用 typeof null
 会返回"object",因为特殊值 null 被认为是一个空的对象引用

Undefined 类型只有一个值,即特殊的 undefined。在使用 var 声明变量但未对其加以初始化时, 这个变量的值就是 undefined, 

例如:
var message;
alert(message == undefined); //true

Null 类型是第二个只有一个值的数据类型,这个特殊的值是 null。从逻辑角度来看, null 值表 示一个空对象指针,而这也正是使用 typeof 操作符检测 null 值时会返回"object"的原因,

var car = null;
alert(typeof car); // "object"

Boolean类型:

Booleanecmascript中使用最多的一种类型。该类型只有两个字面值。true和false.这两个值与数字值不是一回事。因此true不等于1false也不一定等于0


注意:浮点数值的最高精度是 17 位小数,但在进行算术计算时其精确度远远不如整数。例如, 0.1 加 0.2 的结果不是 0.3,而是 0.30000000000000004。这个小小的舍入误差会导致无法测试特定的浮点数值。

例如:
if (a + b == 0.3){ // 不要做这样的测试!
alert("You got 0.3.");
}
parseInt()函数在转换字符串时,更多的是看其是否符合数值模式。它会忽略字 符串前面的空格,直至找到第一个非空格字符。如果第一个字符不是数字字符或者负号, parseInt() 就会返回 NaN 指定基数会影响到转换的输出结果。例如:

var num1 = parseInt("10", 2); //2 (按二进制解析)
var num2 = parseInt("10", 8); //8 (按八进制解析)
var num3 = parseInt("10", 10); //10 (按十进制解析)
var num4 = parseInt("10", 16); //16 (按十六进制解析)

操作符

一元操作符: 只能操作一个值的操作符叫做一元操作符  + - 
位操作符:1 0
布尔操作符:  逻辑非  !   与 &&  或 ||
关系操作符:小于<,大于>,小于等于<=和大于等于>=

with语句with语句的作用是将代码的作用域设置到一个特定的对象中。with语句的语法如下。 with (expression) statement. 定义with语句的主要目的是为了简化多次编写同一个对象的工作。 

var qs = location.search.substring(1);
var hostName = location.hostname;
var url = location.href;
上面几行代码都包含location对象。
如果使用with语句,就可以把上面代码改写为:
with(location){
	var qs = search.substring(1);
	var hostName = hostname;
	var url = href;
}
在这个重写后的例子中,使用 with 语句关联了 location 对象。这意味着在 with 语句的代码块 内部,每个变量首先被认为是一个局部变量,而如果在局部环境中找不到该变量的定义,就会查询 location 对象中是否有同名的属性。如果发现了同名属性, 则以 location 对象属性的值作为变量的值。 严格模式下不允许使用 with 语句,否则将视为语法错误