ES5-17/18 错误信息、try_catch、严格模式
错误信息
语法错误
- 标识符名称(变量、函数名)不规范
- 对关键字赋值
- 基本语法错误,如分号打错
引用错误
- 变量、函数未声明
- 给无法赋值的对象赋值
var a = 1 = 2
范围错误
- 数组长度为负数
- 方法参数超出可行范围
toFixed(-1)
类型错误
- 调用不存在的方法
- new一个非构造函数的内容
var a = new 'String'
URIError
decodeURI()
传非法参数
URI 统一资源标识符 uniform resource indentified
URN 统一资源名称 uniform resource name
URL 统一资源定位符 uniform resource locator(URI+URN)
浏览器会将地址转换为中文编码字符(有可能是UNICODE、GBK…)
encodeURI()
decodeURI()
EvalError
- eval函数执行错误
- json字符串、json对象中不能有方法
// eval 将json字符串转为对象
var arr = [{name: 'Leo',},{name: 'Krystal',},{name: 'Jessica',}
]
var jsonArr = JSON.stringify(arr)
console.log(jsonArr)
console.log(eval('(' + jsonArr + ')'))
console.log(eval(jsonArr))
不建议使用eval
- 语法规范混乱
- 断点调试不变
- 性能问题
- 代码压缩时可能会有意外的错误
- 容易引起XSS攻击
- 可读性差
错误
JS错误信息类型
try catch finally throw
手动抛出错误的方法
- try的内容正常执行时,不走catch
- 可能会错误的放try里,一定能执行的放finally里
JSON.parse()
参数不能是空字符串或undefined,必须是JSON字符串
throw
要写在可能会出错的代码段前,catch(e)
可以抛出自定义信息e
try {console.log('正常执行')if (jsonStr == '') {throw 'JSON字符串为空'}console.log(JSON.parse(jsonStr))} catch (e) {console.log(e) // JSON字符串为空
}
严格模式
ECMAScript
- JavaScript语法规范
- 97 1.0
- 98 2.0
- 99 3.0 JS通行标准
- 07 4.0草案 激进 浏览器厂商不接受 只有Mozilla支持
- 08 4.0中止 容易改善的版本放到3.0中 → 3.1 剩下4.0的部分 → Harmony未发布
- 3.1更名为 ECMAScript5
- 09 5.0 发布 Harmony = JS.next+ JS.next.next
- 11 5.1 ISO国际标准
- 13 ES6草案发布 = js.next ES7 = JS.next.next
- 15 ES6正式发布,ECMAScript2015
ES5
- 正常模式 严格模式
- 启动严格模式:在脚本首行或函数体首行写
use strict
with
可以改变作用域(因此会消耗性能)- 严格模式不能使用
with
、caller
、callee
- 严格模式下不能不写
var
- 严格模式下,函数内部fn使用this指向undefined,但new fn实例化返回的this还是指向实例
- 严格模式下,函数参数不能重复
- 严格模式下,对象的属性不能重复
- 严格模式下,
eval
有自己的作用域,内部用var声明的变量不再是全局的
var a = 1;
var obj = {a: 2
}
function test(tScope) {var a = 3;with (tScope) {console.log(a)}
}
test(window) // 1
test(obj) // 2
test(test) // 3
早期开发,设置命名空间,防止命名重复的方法
多人协作完成一个js文件,模块化 → 命名空间不重复
没区别啊
ES5-17/18 错误信息、try_catch、严格模式相关推荐
- 实例 18错误输出信息与调试信息
package test;/*** @author 年浩**/ public class test {/*** @param args*/public static void main(String[ ...
- 【转】常见蓝屏错误信息
┌-┐ │ 1│ └-┘0x0000000A:IRQL_NOT_LESS_OR_EQUAL ◆错误分析:重要是由问题的驱动程序.出缺陷或不兼容的硬件与软件造成的. 从技术角度道. 标明在内核模式中存在 ...
- 如何对Windows 2000中出现的“Stop 0x0000007B”错误信息进行故障诊断 1
本文说明了如何对在基于 Microsoft Windows 2000 的计算机上出现的"Stop 0x0000007B"错误信息进行故障诊断.在某些情况下,基于 Windows 2 ...
- KEIL软件错误代码及错误信息
KEIL软件错误代码及错误信息 错误代码及错误信息 错误释义 error 1: Out of memory 内存溢出 error 2: Identifier expected 缺标识符 error 3 ...
- 电脑出现错误信息的故障排除
1.出现TASKMON caused an invalid page fault in module KERNEL32.DLL (1)适用范围:Windows Me.Windows 98 (2)症状: ...
- 电脑各种中英文信息对照及错误信息总汇 系统出错信息及解决方案
一.BIOS中的提示信息 提示信息 说明 Drive A error 驱动器A错误 System halt 系统挂起 Keyboard controller ...
- Partition Magic错误信息与解决方法
Partition Magic错误信息与解决方法<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:of ...
- 后盾网lavarel视频项目---页面post方式提交之后动态弹出错误信息
后盾网lavarel视频项目---页面post方式提交之后动态弹出错误信息 一.总结 一句话总结: 1.思路和我想的一样,有错误的时候弹出提示错误消息的模态框就好,没有错误的时候不管它 2.把模态框的 ...
- 最常见的20种VC++编译错误信息
最常见的20种VC++编译错误信息 作者: 出处: blog 责任编辑:方舟 1.fatal error C1010: unexpected end of file while looking for ...
最新文章
- php 多个单选怎么办,【大神看过来】根据一个用PHP做的单选投票,改成多选,且可显示...
- 5whys分析法在美团工程师中的实践
- BCEWithLogitsLoss的使用案例
- Scylla——开源免费的优秀代理 IP 池:自动验证、JSON API、基于 React 的 Web UI、Docker 支持...
- 媒体应用大数据,先解决三大难题
- Python3实现红黑树[上篇]
- append在python里是什么意思_“一棵绿萝七个鬼”是什么意思?卧室里到底能不能养绿萝!...
- 移动Web加速技术月报第2期
- ReactNative简介、开发环境、调试、常用组件、useState状态、FlatList组件、SectionList组件、Platform 模块、定义样式、图片组件、触摸事件、打包apk发布版
- 作者:王雨华(1970-),男,中国科学院昆明植物研究所研究员、副所长
- pip工具可以打包python源代码吗_将python源文件打包成exe文件
- centos7 nat模式配置静态ip_KUKA机器人-配置Ethernet/IP总线为Adaper模式
- ZendGuard-5_0_1 使用备忘
- 当浏览器输入url的时候发生了什么
- 10分钟掌握运输问题(一)
- 扫雷游戏网页版_梦幻西游出网页版,王者出新英雄阿古朵,谁在杀死国产游戏的创新...
- git报错--RPC failed,curl 18 transfer closed with outstanding read data remaining
- 今日头条信息流 - 基础账户实操
- PCL1.9.1下载与配置+Visual Studio2017
- 单库单表到多库多表的全量复制方案
热门文章
- 入Java_初入Java的方法
- java中equals函数所在的类,重写Java中的equals方法介绍
- php与mysql列表_PHP+Mysql+jQuery实现的查询和列表框选择
- Java基础之GC回收
- Ubuntu15.04 64位安装Theano(已经测试可执行)
- Spring Boot Cache使用与整合
- python爬取豆瓣前25个影片内容的正则表达式练习
- 在微信浏览器字体被调大导致页面错乱的解决办法
- JavaWeb -- Session实例 -- 自动登录 和 防止表单重复提交(令牌产生器) MD5码
- HDU 1715 大菲波数 (大数问题)