首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

来自1000多个项目的10大JavaScript错误浅析

在Chrome里读取未定义对象属性或调用未定义对象方法时就会发生这个错误,在Chrome开发者控制台可以很容易地重现这个错误。...TypeError: ’undefined’ is not an object 在Safari里读取未定义对象属性或调用未定义对象方法时就会发生这个错误,在Safari开发者控制台可以很容易地重现这个错误...TypeError: Object doesn’t support property 在IE里读取未定义对象属性或调用未定义对象方法时就会发生这个错误,在IE开发者控制台可以很容易地重现这个错误。...在IE里使用JavaScript命名空间时,就很容易碰到这个错误。发生这个错误十有八九是因为IE无法将当前命名空间里方法绑定到this关键字。...不过,即使有了这些最佳实践,在生产环境中仍然会出现各种不可预期错误。关键是要及时发现那些影响用户体验错误,并使用适当工具快速解决这些问题。

6.2K80

【前端】:对象、原型、继承

图1-7 writeable 出现在原型,会怎么样 configurable:configurable特性表示对象属性是否可以被删除,以及除value和writable特性外其他特性是否可以被修改...常量属性(不能改动属性) 结合 configuration:false 和 writable:false就可以创建一个真正常量属性不可修改、重定义或者删除)。 ? ? 1.2.2....所以,密封之后不仅不能添加新属性,也不能重新配置或者删除任何现有属性(虽然可以修改属性值)。...如果在 [[Prototype]] 链上层存在 foo,但是它被标记为只读 (writable: false),那么无法修改已有属性或者在 myObject 创建屏蔽属性。...foo 不会被添加到 myObject,也不会重新定义 foo 这个 setter。

1K50
您找到你想要的搜索结果了吗?
是的
没有找到

理解 JavaScript undefined

如果你还不熟悉 JavaScript 中变量和属性区别(包括内部 VariableObject),那么最好先去阅读一下我一篇文章。 什么是 undefined?...之前变量值为 undefined,那么属性引用是不可被解析。下面的示例本会抛出一个 ReferenceError,但实际它不会,因为 TypeError 会先被抛出。...根据定义,既不是属性也不是变量引用是不可解析,并且会抛出一个 ReferenceError: 上面的 JavaScript 中没有看到显式基值,因此会查找 VariableObject 来引用名称为...如果 JavaScript 在遇到无法解析引用时始终抛出 ReferenceErrors 那就更好了(实际这是它在 ECMA 严格模式下所做)。...如果你代码写得够好的话,其实很少需要这样做。我们已经看到,在典型用法中,只有一种方法可以获得不可解析引用:使用既不是属性也不是变量仅在语法正确引用。

97620

JavaScript数据属性和访问器属性

[[Configurable]]:表示能否通过 delete 删除属性从而重新定义属性,能否修改属性特性,或者能否把属性修改为访问器属性。...对于直接在对象定义属性,它们 [[Configurable]]、[[Enumerable]] 以及 [[Writable]] 特性都被设置为 true,而 [[Value]] 特性被设置为指定值...在configurable为true情况下可多次调用Object.defineProperty( )修改同一属性。 在非严格情况下修改无法配置属性操作会被忽略,在严格模式下会抛出错误。...[[Configurable]]:表示能否通过 delete 删除属性从而重新定义属性,能否修改属性特性,或者能否把属性修改为数据属性。..., // writable: true, // enumerable: true, // configurable: true // } [[Configurable]] 特性还有个作用,一旦把属性定义不可配置

1.6K31

【JS】312- 复习 JavaScript 严格模式(Strict Mode)

严格模式改变了什么 意外全局变量 如果为未声明变量赋值,则默认情况下 JavaScript 会在全局对象创建该变量: JavaScript 代码: ;(function() { variable...= 'hey'})() (() => { name = 'Flavio'})() variable //'hey'name //'Flavio' 转到严格模式,如果你尝试执行上面的操作,则会出现错误...在 JavaScript 中,可以使用下面代码定义对象属性不可JavaScript 代码: const car = {}Object.defineProperty(car, 'color', { value...: Cannot set property color of # which has only a getter })() 非严格模式允许扩展一个不可扩展对象: JavaScript 代码: const...= true //TypeError: Cannot create property 'testing' on string 'test'})() 删除错误 在非严格模式,如果你尝试删除无法删除属性

99330

1000多个项目中十大JavaScript错误以及如何避免

这是在 Safari 中读取属性或调用未定义对象方法时发生错误,这与 Chrome 上述错误基本相同,只是 Safari 使用不同错误消息。 ? 3....TypeError: Null Is Not an Object (evaluating...) 这是在 Safari 中读取属性或调用空对象方法时发生错误。 ?...这是在 IE Web 应用程序中使用 JavaScript 命名空间出现一个常见问题。出现这种情况绝大部分原因是IE无法将当前名称空间内方法绑定到this关键字。...TypeError: Cannot Read Property ‘length’ 这是 Chrome 中发生错误,因为读取了未定义长度属性变量。 ?...Uncaught TypeError: Cannot Set Property 当尝试访问未定义变量时,总会返回 undefined。我们也无法获取或设置 undefined 任何属性

8.3K40

医疗数字阅片-医学影像-Module: Panel-自定义面板-中-es6-Object.defineProperty()定义属性

Object.defineProperty() 方法会直接在一个对象定义一个新属性,或者修改一个对象现有属性,并返回此对象。...这个方法允许修改默认额外选项(或配置)。默认情况下,使用 Object.defineProperty() 添加属性值是不可修改(immutable)。...时,该属性描述符才能够被改变,同时该属性也能从对应对象被删除。...当属性不可配置时,不能在数据和访问器属性类型之间切换。 当试图改变不可配置属性(除了 value 和 writable 属性之外)值时,会抛出TypeError,除非当前值和新值相同。...Writable 属性 当 writable 属性设置为 false 时,该属性被称为“不可”。它不能被重新赋值。

64640

1000多个项目中十大JavaScript错误以及如何避免

通过统计数据库中1000多个项目,我们发现在 JavaScript 中最常出现错误有10个。下面会向大家介绍这些错误发生原因以及如何防止。...这是在 Safari 中读取属性或调用未定义对象方法时发生错误,这与 Chrome 上述错误基本相同,只是 Safari 使用不同错误消息。...[image.png] TypeError: Null Is Not an Object (evaluating...) 这是在 Safari 中读取属性或调用空对象方法时发生错误。...TypeError: Cannot Read Property ‘length’ 这是 Chrome 中发生错误,因为读取了未定义长度属性变量。...我们也无法获取或设置 undefined 任何属性。在这种情况下,应用程序将抛出“Uncaught TypeError cannot set property of undefined”。

6.2K30

《你不知道JavaScript》-- 对象(笔记)

: Cannot redefine property: a 不管是不是处于严格模式,尝试修改一个不可配置属性描述符都会出错,即把configurable修改成false是单向操作,无法撤销。...b会静默失败;在严格模式下,将会抛出TypeError错误。...并把所有现有属性标记为 configurable: false。 密封之后不能添加新属性,也不能重新配置或者删除任何现有属性。...这个方法是应用在对象级别最高不可变性,它会禁止对对象本身以及任意直接属性修改(这个对象引用其他对象不受影响)。...当给一个属性定义getter、setter或者两个都有时,这个属性会被定义为“访问描述符”,对于访问描述符来说,JavaScript会忽略它们value和writable特性,取而代之是set和get

63920

分享前端开发常用代码片段

作者:WEBING segmentfault.com/a/1190000014700549 一、预加载图像 如果你网页中需要使用大量初始不可(例如,悬停)图像,那么可以预加载这些图像。 ?...四、悬停切换 当用户鼠标悬停在可点击元素时,可添加类到元素中,反之则移除类。 ? 只需要添加必要 CSS 即可。更简单方法是使用 toggleClass() 方法。 ?...mousePos.y; } document.onmousemove = mouseMove; 2、jQuery实现 $('#ele').click(function(event){ //获取鼠标在图片坐标...result){ alert('上传类型错误,请重新上传'); obj.value = ''; } } 二十二、正则表达式 //验证邮箱 /^\w+@([0-9a-zA-Z]+[.])...如果没有定义处理程序,其他 jQuery 代码或会就此罢工。定义一个全局 Ajax 错误处理程序 ?

1.1K51

分享前端开发常用代码片段-值得收藏

一、预加载图像 如果你网页中需要使用大量初始不可(例如,悬停)图像,那么可以预加载这些图像。 ? 二、检查图像是否加载 有时为了继续脚本,你可能需要检查图像是否全部加载完毕。 ?...四、悬停切换 当用户鼠标悬停在可点击元素时,可添加类到元素中,反之则移除类。 ? 只需要添加必要 CSS 即可。更简单方法是使用 toggleClass() 方法。 ?...mousePos.y; } document.onmousemove = mouseMove; 2、jQuery实现 $('#ele').click(function(event){ //获取鼠标在图片坐标...result){ alert('上传类型错误,请重新上传'); obj.value = ''; } } 二十二、正则表达式 //验证邮箱 /^\w+@([0-9a-zA-Z...如果没有定义处理程序,其他 jQuery 代码或会就此罢工。定义一个全局 Ajax 错误处理程序 ?

1.9K31

JavaScript 开发中常见错误解决小总结

❝注意:JavaScript 是属于同步编程语言,如果出现错误就会造成后面的代码无法运行,当红字没有解决时,都有可能造成接下来代码行错误或是无法继续运行。...: a is not defined 引用错误:由于变量 a 未定义,所以在使用这个变量时会出现定义提示,只要先定义好这个变量即可。...Uncaught ReferenceError: $ is not defined 错误类型:TypeError TypeError 是类型错误,同样 IDE 也不会预先提示有错误,必须在执行时才会看到...TypeError: Cannot read property 'a' of undefined var a; console.log(a.a); 说明:在这个变量值中无法找到其特定属性,例如在...undefined、null 是找不到其它属性,如果无法确认该变量是否为 undefined,可以把代码改成这样: if (typeof a !

3K20

JavaScript 权威指南第七版(GPT 重译)(五)

如果一个属性不可配置,你就无法改变它配置或可枚举属性。 如果一个访问器属性不可配置,你就无法更改其 getter 或 setter 方法,也无法将其更改为数据属性。...如果一个数据属性不可配置,你就无法将其更改为访问器属性。 如果一个数据属性不可配置,你就无法将其可写属性从false更改为true,但你可以将其从true更改为false。...如果一个数据属性不可配置不可写,你就无法改变它值。但是,如果一个属性是可配置不可,你可以改变它值(因为这与使其可写,然后改变值,然后将其转换回不可写是一样)。...TypeError: 无法更改原型 写代理时另一种技术是定义处理程序方法,拦截对象操作,但仍将操作委托给目标对象。...TypeError:get()返回值与目标不匹配 代理强制执行许多附加不变性,几乎所有这些不变性都与不可扩展目标对象和目标对象不可配置属性有关。

17510

双向数据绑定中重要属性-Object.defineProperty()详解

Object.defineProperty(obj, prop, descriptor): 会直接在一个对象定义一个新属性,或者修改一个对象现有属性, 并返回这个对象。...obj:要在其定义属性对象。 prop:要定义或修改属性名称。 descriptor:将被定义或修改属性描述符 返回值:被传递给函数对象。...如果旧描述符将其 configurable 属性设置为false,则该属性被认为是“不可配置”,并且没有属性可以被改变(除了单向改变 writable 为 false)。...当属性不可配置时,不能在数据和访问器属性类型之间切换。 当试图改变不可配置属性(除了value和writable 属性之外)值时会抛出TypeError,除非当前值和新值相同。...Writable 属性:当writable属性设置为false时,该属性被称为“不可写”。它不能被重新分配。 如示例所示,试图写入非可写属性不会改变它,也不会引发错误

55010

前端异常捕获与处理

譬如 IE 添加了与 message 属性完全相同 description 属性,还添加了保存这内部错误数量 number 属性。...:尝试引用一个未被定义变量时,将会抛出此异常 SyntaxError:语法解析不合理 TypeError:类型错误,用来表示值类型非预期类型时发生错误 URIError:以一种错误方式使用全局...TypeError 类型在 JavaScript 中会经常遇到,在变量中保存着意外类型时,或者在访问不存在方法时,都会导致这种错误。...为了弥补这一点,React 实现了所谓错误边界。错误边界是 React 组件,它“捕获子组件树中任何地方 JavaScript 错误”,同时还记录错误并显示回退用户界面。...页面等不同粒度配置告警事件过滤规则 对接钉钉消息系统,将告警消息推送到订阅群 过滤接口错误和优化 Promise 错误上报信息 后续也可以单开一篇介绍介绍,如何结合开源错误监控系统,搭建具有公司特色监控体系

3.4K30

严格模式 – JavaScript

严格模式在语义与正常JavaScript有一些不同。 首先,严格模式会将JavaScript陷阱直接变成明显错误。...抛出TypeError错误 // 给不可扩展对象属性赋值 var fixed = {}; Object.preventExtensions(fixed); fixed.newProp = “...ohai”; // 抛出TypeError错误 第三, 在严格模式下, 试图删除不可删除属性时会抛出异常(之前这种操作不会产生任何效果): “use strict”; delete Object.prototype...; // 抛出TypeError错误 第四,在Gecko版本34之前,严格模式要求一个对象内所有属性名在对象内必须唯一。...没有很多执行时检查情况,Javascript灵活性让它无法有效率地做这件事。一些语言中函数普遍出现,以至于执行时检查他们会引起严重性能损耗。

99630

H5页面判断客户端是iOS或者Android并跳转对应链接唤起APP

判断客户端 每个客户端都会有自己 UA (userAgent)标识,可以用 JavaScript 获取客户端标识。 用正则来判断手机是 iOS(苹果)还是 Android(安卓)客户端。...代码如下:     var u = navigator.userAgent;     var isAndroid = u.indexOf(...例如: 点击下载应用 唤起本地APP 在日常生活中,应该不难遇到打开页面自动跳转到APP提示...该方法不会引起页面可见变化(例如页面内容变成一个新页面),不会导致浏览器历史记录变化,大致实现如下: 在 body 添加 iframe,设置 src 属性为跳转 URL scheme 。...iOS9 在 iOS 9 ,iframe 方案不可用。 按不能使用之前Android代码,因为在打开自定义 URL scheme 时,会弹出对话框,询问是否用 xx 应用来打开。

12.7K30

JavaScript学习笔记+常用js用法、范例(一)

由于在Javascript语言中,只有函数内部子函数才能读取局部变量,因此可以把闭包简单理解成”定义在一个函数内部函数”。 所以,在本质,闭包就是将函数内部和函数外部连接起来一座桥梁。...数学对象; Date日期对象 高级对象: Object自定义对象;Error错误对象;Function函数对象; RegExp正则表达式对象;Global全局对象 自动创建对象:调用字符串对象属性或方法时自动创建对象...可增删改 对于属性节点,nodeValue 属性包含属性值。 nodeValue 属性对于文档节点和元素节点是不可。会返回 null data同样是文本内容,这个属性下同样可以增删改。...对于文档节点和元素节点不可用,返回 undefine nodeType 属性返回节点类型。...应该用send(“ “),否则会出现411错误 9.event.x 与 event.y 问题 问题: 在IE中,event 对象有x,y属性,FF中没有 解决方法: 在FF中,与 event.x 等效

2.1K10

JavaScrip最容易犯十大错误及其避免方法()

Uncaught TypeError: Cannot read property 如果你是一个javascript开发者,你肯定看到过此错误 读取属性或调用方法对象定义 这可能由于许多原因而发生,...反过来,这意味着ItemList将项目定义为未定义,并且您在控制台中收到错误 - “Uncaught TypeError无法读取未定义属性’map’”。 这很容易解决。...TypeError: Object doesn’t support property 当您调用未定义方法时,这是在IE中发生错误。...Uncaught TypeError: Cannot set property 当我们尝试访问未定义变量时,它总是返回undefined,我们无法获取或设置undefined任何属性。...在这种情况下,应用程序将抛出“Uncaught TypeError无法设置未定义属性”。 10.

13310
领券