加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_宿迁站长网 (https://www.0527zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

再也不怕 JavaScript 报错了,怎么看怎么处理都在这

发布时间:2022-12-21 13:09:54 所属栏目:安全 来源:未知
导读: 为什么报错?
某个变量名称已经作为参数出现了,又在使用let再次声明。
举个栗子
// let 重复声明
let a = 0;
let a \= 2;
// 在函数中参数已经出现,函数里使用let重新声明
function fn(a

为什么报错?

某个变量名称已经作为参数出现了,又在使用let再次声明。

举个栗子

// let 重复声明
let a = 0;
let a \= 2;
// 在函数中参数已经出现,函数里使用let重新声明
function fn(arg) {
 let arg \= \[\];
}

SyntaxError: Invalid or unexpected token

含义:捕获无效或意外的标记

为什么报错?

代码中有非法的字符或者缺少必要的标识符号,比如减号 ( - ) 与连接符 ( – ) ,或者是英文双引号 ( " ) 与中文双引号 ( “ )。

举个栗子

// 遗漏的字符
let str = 'string;
let colors = \['#000', #333', '#666'\];
// 使用特殊字符
let str1 = 'string";
let str2 = 5#5;
// 错配字符(使用中文引号字符)
let str3 = ‘string’;

处理办法

检查是否有特殊字符或者是否遗漏一些字符。

SyntaxError: Unexpected end of input

含义:意外的终止输入

为什么报错?

代码中某些地方的括号或引号不匹配缺失,缺少()、[]、{}等。

举个栗子

// 缺少括号
if(true)
let obj \= {id: 1
let arr \= \[1,2,3
// 缺少结束符号
(function () {
    console.log('hello world');
}()

处理办法

检查是否有特殊字符或者是否遗漏一些字符,括号需要配对出现。

TypeError: Cannot read property 'x' of undefined

TypeError: Cannot set property 'x' of undefined

含义:无法读取属性‘x’, 无法设置属性 'x'

为什么报错?

访问或设置未定义(undefined)或null值的属性时会发生这种报错。

举个栗子

// undefined
let a = undefined;
a.id; // 读取
a.id = 1; // 设置
// null
let b = null;
b.id;  // 读取
b.id = 2; // 设置
null.filter(item=>item)

处理办法

有一些方法可以避免这种错误。一种简单且适用于小型属性链的方法是使用逻辑运算符&&。

let obj = undefined;
console.log(obj&&obj.id);

TypeError: 'x' is not a constructor

含义:表示 ‘x’不是构造函数

为什么报错?

使用不是构造器的对象或者变量来作为构造器使用。比如:new 10;

举个栗子

var Car = 1;
new Car();
new Math();

处理办法

使用正确的构造函数。Generator functions 也不能作为构造器来使用。

function Car(make, model, year) {
  this.make = make;
  this.model = model;
  this.year = year;
}

SyntaxError: Invalid regular expression flags

含义:正则表达式标志无效

为什么报错?

在代码中出现了无效的正则表达式的标记。

举个栗子

let reg = /foo/bar;

处理办法

let reg = /foo/g;

DOMException: Failed to execute 'open' on 'XMLHttpRequest': Invalid URL

含义:无效的Url

为什么报错?

在使用ajax 请求时url错误,导致请求失败

举个栗子

function createXHR(url) {
    var xhr = new XMLHttpRequest();
    xhr.open('POST', url, true);
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.send('user=admin');
    xhr.onreadystatechange \= function () {
    }
}
createXHR('http://192.168.10.8080'); // 错误url

报400是什么错_主机报文的mac错_宏病毒报错

createXHR('http:/192.168.10:8080/open'); // 缺少 /,注:有些游览器会自动补全

处理办法

检查url 请求是否正确,保证请求路径的完整。

createXHR('http://192.168.10:8080');

异常调试及捕获

try/catch

JS中处理异常的一种模式,try用于可能会发生错误的代码,catch对错误的处理

try{
  // 可能会导致错误的代码
}catch(error) {
  // 错误处理
}

举个栗子

try{
  console.log(a)
}catch(error) {
   // 打印错误信息
  console.log(error);  // ReferenceError: a is not defined
}

throw

用来抛出一个用户自定义的异常,执行将被停止。

function getUserName(name) {
    if(!name) throw new Error('用户名无效');
    return name;
}
getUserName();

Promise 的异常处理

Promise执行中,本身自带try...catch的异常处理,出错时,将错误Rejact函数。

new Promise((resolve, reject) => {
  throw new Error('error!');
}).catch(alert);

console.log() 方法

在游览器中,使用console.log打印javaScript的值。

let value = '你最棒了,点个赞呗!'
console.log(value);

debugger 断点调试

用于停止执行 JavaScript宏病毒报错,并调用调试函数。

let value = 15;
debugger
document.querySelector('body').innerHTML = '你最棒了,点个赞呗!'

JavaScript学习指南

今天向小伙伴们推荐一本电子书《JavaScript权威指南》,遇到js的难点时推荐看看这里的内容,从javascript 概述到客户端javascript参考共有4个部分,内容全面讲解详细,篇幅原因,下面以截图展示目录及部分内容,完整版的《JavaScript权威指南》PDF请私信我“指南”获取噢。

目录

报400是什么错_宏病毒报错_主机报文的mac错

第一部分 javascript 语言核心

主机报文的mac错_报400是什么错_宏病毒报错

第二部分 客户端javascript

报400是什么错_宏病毒报错_主机报文的mac错

以上即是《JavaScript权威指南》,需要的小伙伴请点击下方卡片即可免费获取。

最后

报错就是那么简单,根据这些代码敲一敲,熟悉一些常用的报错信息,便于在报错的时候快速地定位到报错原因。希望对小伙伴们有用。

(编辑:云计算网_宿迁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!