[TOC]

1、严格模式

严格模式通过在脚本或函数的头部添加 “use strict”; 表达式来声明
在严格模式中,限制有
1、不允许使用未声明的变量:
“use strict”;
x = 3.14; // 报错 (x 未定义)

2、不允许删除变量或对象。
“use strict”;
var x = 3.14;
delete x; // 报错

3、不允许删除函数。
“use strict”;
function x(p1, p2) {};
delete x; // 报错

4、不允许变量重名:
“use strict”;
function x(p1, p1) {}; // 报错

5、**不允许使用八进制:**
“use strict”;
var x = 010; // 报错

6、变量名不能使用 “arguments” 字符串:
“use strict”;
var arguments = 3.14; // 报错

7、禁止this关键字指向全局对象。

function f(){
    return !this;
} 
// 返回false,因为"this"指向全局对象,"!this"就是false

function f(){ 
    "use strict";
    return !this;
} 
// 返回true,因为严格模式下,this的值为undefined,所以"!this"为true。

8、**“use strict” 指令只允许出现在脚本或函数的开头。**

为什么使用严格模式:

  • 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;

  • 消除代码运行的一些不安全之处,保证代码运行的安全;

  • 提高编译器效率,增加运行速度;

  • 为未来新版本的Javascript做好铺垫。

“严格模式”体现了Javascript更合理、更安全、更严谨的发展方向,包括IE 10在内的主流浏览器,都已经支持它,许多大项目已经开始全面拥抱它。

2、JavaScript 使用误区

1、在常规的比较中,数据类型是被忽略的,以下 if 条件语句返回 true:
var x = 10;
var y = “10”;
if (x == y)

2、在严格的比较运算中,=== 为恒等计算符,同时检查表达式的值与类型,以下 if 条件语句返回 false:
var x = 10;
var y = “10”;
if (x === y)

3、这种错误经常会在 switch 语句中出现,switch 语句会使用恒等计算符(===)进行比较:
以下实例会执行 alert 弹窗:
var x = 10;
switch(x) {
case 10: alert(“Hello”);
}

以下实例由于类型不一致不会执行 alert 弹窗:
var x = 10;
switch(x) {
case “10”: alert(“Hello”);
}

3、加法与连接注意事项

加法是两个数字相加。
连接是两个字符串连接。
JavaScript 的加法和连接都使用 + 运算符。
接下来我们可以通过实例查看两个数字相加及数字与字符串连接的区别:

var x = 10 + 5; // x 的结果为 15
var x = 10 + “5”; // x 的结果为 “105”

4、浮点型数据使用注意事项

JavaScript 中的所有数据都是以 64 位浮点型数据(float) 来存储。
所有的编程语言,包括 JavaScript,对浮点型数据的精确度都很难确定:

var x = 0.1;
var y = 0.2;
var z = x + y // z 的结果为 0.3
if (z == 0.3) // 返回 false

为解决以上问题,可以用整数的乘除法来解决:

实例

var z = (x 10 + y 10) / 10; // z 的结果为 0.3

5、JavaScript 字符串分行

JavaScript 允许我们在字符串中使用断行语句:

实例 1

var x =
“Hello World!”;

但是,在字符串中直接使用回车换行是会报错的:

实例 2

var x = “Hello
World!”;

字符串断行需要使用反斜杠(),如下所示:

实例 3

var x = “Hello \
World!”;

6、Undefined 不是 Null

在 JavaScript 中, null 用于对象, undefined 用于变量,属性和方法。
对象只有被定义才有可能为 null,否则为 undefined。
如果我们想测试对象是否存在,在对象还没定义时将会抛出一个错误。

7、JavaScript 验证 API


约束验证 DOM 方法

Property Description
checkValidity() 如果 input 元素中的数据是合法的返回 true,否则返回 false。
setCustomValidity() 设置 input 元素的 validationMessage 属性,用于自定义错误提示信息的方法。
使用 setCustomValidity 设置了自定义提示后,validity.customError 就会变成true,则 checkValidity 总是会返回false。如果要重新判断需要取消自定义提示,方式如下:```

setCustomValidity(‘’) setCustomValidity(null) setCustomValidity(undefined) ``` |

以下实例如果输入信息不合法,则返回错误信息:

checkValidity() 方法



8、JavaScript JSON

JSON 是用于存储和传输数据的格式。
JSON 通常用于服务端向网页传递数据 。

什么是 JSON?

  • JSON 英文全称 JavaScript Object Notation

  • JSON 是一种轻量级的数据交换格式。

  • JSON是独立的语言 *

  • JSON 易于理解。