错误的类型

  1. SyntaxError(语法错误)
  2. ReferenceError (引用错误)
  3. TypeError(类型错误)
  4. RangeError(范围错误)
  5. URIError()
  6. Eval Error()

    SyntaxError

    语法错误
    1. /* 语法错误 */
    2. var 1 = 1;
    3. var 1ab = 1;
    4. var a = 1 = 2;
    image.png

    ReferenceError 应用错误

    1. test();
    2. console.log(a);
    image.png

    RangeError 范围错误

  • 数组长队赋值为负数

    1. var arr =[1, 2, 3];
    2. arr.length=-1;

    image.png

  • 对象方法参数 ,超出可行范围

    1. var num = new Number(66.66);
    2. console.log(num.toFixed(-1))

    image.png
    TypeError 类型错误
    用不存在的方法

    1. 123()
    2. var obj ={
    3. say:1
    4. }
    5. obj.say();

    image.pngimage.png

  • 实例化原始值

    1. var a = new 1;

    image.png

    URIError URI错误

  1. URI: Uniform Resource Identifier //统一资源标识符
  2. URL Uniform Resource Locator 统一资源定位符
  3. URN Uniform Resource Nam 统一资源名称
    1. var url = 'http://www.baidu.com?name=敲代码';
    2. var newURL = encodeURI(url);
    3. console.log(newURL);//"http://www.baidu.com?name=%E6%95%B2%E4%BB%A3%E7%A0%81"
    1. var str = decodeURI('%sdasd')
    image.png

    EvalError eval 函数执行错误

    1. eval('var a = 1;console.log(a)')

Error 构造函数

  1. var err = new Error('我是错误信息');
  2. console.log(err);
  3. var err1 = new SyntaxError('我是语法错误信息')
  4. console.log(err1);

image.png

try catch finally throw

  1. try{
  2. console.log('正常执行1');
  3. console.log(a);
  4. console.log('正常执行2');
  5. }catch (e){
  6. console.log(e);
  7. }

image.png

  • try 代码内部出线错误。不影响finally 里面和外部的代码执行
    1. try{
    2. console.log('正常执行1');
    3. console.log(a);
    4. console.log('正常执行2');
    5. }catch (e){
    6. console.log('正常执行3')
    7. console.log(e);
    8. cosnole.log(e.name);
    9. console.log(e.message);
    10. }finally{
    11. console.log('正常执行4');
    12. }
    image.png

    ES5

  1. 严格模式
  2. 正常模式 ```javascript ‘use strict’//严格模式,字符串。为什么是字符串不是函数。因为字符串在低版本浏览器中不报错。 //历史 /**
    • 严格模式
    • ES5严格模式
    • 97 1.0
    • 98 2.0
    • 99 3.0 JS通行标准。
    • 07 4.0草案太激进 导致许多厂商反对 mozilla 支持 因为
    • 08 4.0终止 容易改善的 3.1 激进的部分为Harmony
    • 3.1改成了ES5
    • 09 ES5 正式发布。 Harmony中比较不激进的 Next激进的JS.Next.Next
    • 11
    • 13 ES6 = js.next js.next.next 变成 ES7的草案
    • 15 ES6 正式发布 焦作ES 2015. */
  1. 1. 写在全局
  2. 1. 写在函数里
  3. ```javascript
  4. function test(){
  5. 'use strict';
  6. }

with 改变作用域

  1. with、callee、caller 在严格模式下都会报语法错误、 ```javascript

var a = 1; var obj = { ‘a’:2 } function test() { ‘use strict’ var a = 3; //with 可以改变作用域链 obj with (window) { console.log(a);//a=1; } with (obj) { console.log(a);//a=2 } with (test) { console.log(a)//a=3 } } test();

  1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/12831495/1617004149377-30ef858c-3f08-4392-abfb-b20bc151e3fd.png#align=left&display=inline&height=112&margin=%5Bobject%20Object%5D&name=image.png&originHeight=112&originWidth=276&size=2040&status=done&style=none&width=276)
  2. <a name="s5gxD"></a>
  3. ## 严格模式下变量要声明。
  4. ```javascript
  5. function test(){
  6. 'use strict'
  7. a = 1;
  8. }

image.png

严格模式下this 指向undefined

  1. function test(){
  2. 'use strict'
  3. console.log(this);
  4. }

image.png

严格模式下参数不能重复

  1. function test(a,a){
  2. console.log(a);
  3. }
  4. test(1,1)
  5. function test2(a,a){
  6. 'use strict'//预编译的时候就报错。
  7. console.log(a);
  8. }
  9. test2();

image.png

严格模式下的对象

  1. 'use strict'
  2. var obj = {
  3. a:1,
  4. b:2
  5. };
  6. console.log(obj.a);

严格模式下的eval

  1. 'use strict'
  2. eval('var a =1;console.log(a)')
  3. console.log(a);

命名空间

  1. window.onload = function(){
  2. init();
  3. }
  4. function init(){};
  5. var initSlider = (function(){
  6. var a = 1;
  7. })();
  8. var initTop = (function(){
  9. var a = 2;
  10. })();