ES5-17/18 错误信息、try_catch、严格模式

错误信息

语法错误

  1. 标识符名称(变量、函数名)不规范
  2. 对关键字赋值
  3. 基本语法错误,如分号打错

引用错误

  1. 变量、函数未声明
  2. 给无法赋值的对象赋值var a = 1 = 2

范围错误

  1. 数组长度为负数
  2. 方法参数超出可行范围toFixed(-1)

类型错误

  1. 调用不存在的方法
  2. 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

  1. 语法规范混乱
  2. 断点调试不变
  3. 性能问题
  4. 代码压缩时可能会有意外的错误
  5. 容易引起XSS攻击
  6. 可读性差

错误

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可以改变作用域(因此会消耗性能)
  • 严格模式不能使用withcallercallee
  • 严格模式下不能不写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文件,模块化 → 命名空间不重复
    在这里插入图片描述
    没区别啊
    在这里插入图片描述
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/251150.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue --- v-text、v-show、v-if、v-else

v-text: <div id "app"><p v-text"msg"></p> </div> <script>let app new Vue({el:#app,data:{msg:Hello Vue}}) </script>// 可见v-text在某种程度上等价于 {{}}v-show: <div id "app"><div…

vue --- v-for、v-on、v-model、v-once

v-for: <div id "app"><ul><li v-for"item in list">{{item}}</li></ul> </div> <script>let app new Vue({el:#app,data:{list:[B,A,T]}}) </script>拿到索引index: <div id"app">&…

ES5-19 变量声命周期、垃圾回收原理、arguments

变量声命周期 垃圾回收 找出不再使用的变量释放其占用内存固定的时间间隔运行 解除由于闭包产生的对fn AO的引用 标记清除 排除全局变量、排除闭包引用的AO中的变量进入环境 → 离开环境常用 引用计数 引用计数为0时清除对循环引用的情况&#xff0c;如果不手动接触引用…

vue --- compoent妙用

首先利用写一个静态模板的组件 <div id "app"><my-arti></my-arti> </div> <script>Vue.component(my-arti,{template:<div style"border:1px solid black"><span>date:2019年06月14日</span><br>…

ES5-20 复习

3-1 变量单一声明方式String Boolean undefined Number nullundefined nulltypeof(null) ‘object’typeof(方法) ‘function’typeof() 是运算符&#xff0c;不是数据类型 报错0 -0 trueInfinity -Infinity falseNaN和谁都不等原始值没有属性 要打印属性、调用方法得经过基…

eclipse中去掉警告提示

有时候我们要去掉这些不必要的提示 下面我们来设置去掉这些警告提示 转载于:https://www.cnblogs.com/xiaostudy/p/9370016.html

vue --- vue-router

vue-router的CDN <script src "https://unpkg.com/vue-router2.5.3/dist/vue-router.js"></script>// 当然还需要导入vue的cdn <script src"https://cdn.jsdelivr.net/vue/2.1.3/vue.js"></script>使用router-link(to)添加点击链…

django-restframework使用

安装restframework: pip install djangorestframework 修改项目settings.py: INSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,rest_framework, ]修改项…

JSON基础与数据解析、JSON方法、AJAX初识

JSON JavaScript Object Notation js对象标记是对象&#xff0c;是轻量级数据交互的格式&#xff0c;不能有方法它基于 JavaScript 语法&#xff0c;但与之不同&#xff1a;JavaScript不是JSON&#xff0c;JSON也不是JavaScript映射用:隔开并列数据用,隔开映射的集合用{}包裹键…

iOS开发经验总结

在iOS开发中经常需要使用的或不常用的知识点的总结&#xff0c;几年的收藏和积累&#xff08;踩过的坑&#xff09;。 一、 iPhone Size 二、 给navigation Bar 设置 title 颜色 123UIColor *whiteColor [UIColor whiteColor];NSDictionary *dic [NSDictionary dictionaryWit…

ES5 数组扩展方法 forEach/filter/map的使用与重写

ES3 splice slice join sort &#xff08;IE5、IE6&#xff09; 数组扩展方法 ES5&#xff08;在ES3的基础上增加、修正&#xff09; forEach 可能会改变原数组(直接操作了arr[i]&#xff0c;没有使用深拷贝)参数1&#xff1a;回调函数&#xff08;如果不使用箭头函数&#xf…

187. Repeated DNA Sequences重复的DNA子串序列

&#xff3b;抄题&#xff3d;&#xff1a; All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACGAATTCCG". When studying DNA, it is sometimes useful to identify repeated sequences within the DNA. Write a fun…

ES5 every/some/reduce/reduceRight的使用与重写

被作为实参传入另一函数&#xff0c;并在该外部函数内被调用&#xff0c;用以来完成某些任务的函数&#xff0c;称为回调函数。 break、return用于终止循环的区别&#xff1a; return只能用在函数体内&#xff08;单独一个for循环里直接用return会报错&#xff09;对于多层循环…

【前端统计图】echarts改变颜色属性的demo

一&#xff1a;柱状图改变颜色 图片.png代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><!-- 柱状统计图 --><div class"row"><div …

elasticsearch5.x:查询建议介绍、Suggester 介绍以及Java-api实现

elasticsearch5.x&#xff1a;查询建议介绍、Suggester 介绍 参考&#xff1a;http://www.cnblogs.com/leeSmall/p/9206646.html 参考(重点)&#xff1a;https://elasticsearch.cn/article/142 参考&#xff08;官网&#xff09;&#xff1a;https://www.elastic.co/guide/en/e…

DOM-2 document对象、获取元素、节点、遍历树

一、document获取元素 1. 方法 document.getElementById(‘box’) // 在IE8及以下是不分大小写的&#xff0c;而且name值也能匹配上document.getElementsByClassName(’’) // IE8及以下是用不了的document.getElementsByTagName() 都兼容document.getElementsByName() 用的非…

javascript --- js中的事件

事件实现松耦合: // JS和HTML之间的交互是通过事件实现的. // 事件,就是文档或浏览器窗口中发生一些特定的交互瞬间. // 可以使用侦听器来预定事件,以便事件发生时执行相应的代码. // 这种在传统软件工程中被称为观察员模式的模型,支持页面的行为与页面的外观之间的松耦合事件…

centos系统设置局域网静态IP

---恢复内容开始--- centos系统设置局域网静态IP 很多时候&#xff0c;我们并不希望漏油器重启之后&#xff0c;自己的服务器动态的获取IP&#xff0c;这样很不利&#xff0c;因为你可能装了mysql&#xff0c;redis&#xff0c;等软件&#xff0c;然后需要远程去访问这台服务器…

DOM-3 【utils/待讲评】节点属性、方法、封装方法、DOM结构

讲评 节点属性 nodeType 元素节点 1 大写 属性节点 2 文本节点 3 #text 注释节点 8 #comment document 9 DocumentFragment 11 nodeName是只读属性元素节点的nodeName是大写的其余的是#小写的元素节点没有nodeValue属性&#xff0c;null&#xff0c;是可写的其余有&#xff08…

javascript --- DOM0级、DOM2级、跨浏览器 的事件处理程序

DOM0级事件处理程序: // 使用DOM0级方法指定的事件处理程序被认为是元素的方法 // 这个时候的事件处理程序是在元素的作用域中运行: <div id "myBtn" >DOM0</div> <script>var btn document.getElementById("myBtn");btn.onclick fun…