严格模式: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); //trueNull 类型是第二个只有一个值的数据类型,这个特殊的值是 null。从逻辑角度来看, null 值表
示一个空对象指针,而这也正是使用 typeof 操作符检测 null 值时会返回"object"的原因,
var car = null;
alert(typeof car); // "object"Boolean类型:
Boolean是ecmascript中使用最多的一种类型。该类型只有两个字面值。true和false.这两个值与数字值不是一回事。因此true不等于1而false也不一定等于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 语句,否则将视为语法错误