JavaScript初学者最容易犯的错误(一)

JavaScript 高手也会犯的 10 个错误 为了更好地理解 JavaScript 的复杂之处,编写出更干净、更高效、更可靠的代码,我们将深入探讨 10 个即使是经验丰富的 JavaScript 开发者也容易犯的错误。这篇文章将揭示这些错误背后的原因,并提供相应的解决方案,帮助你避免这些陷阱,提升你的 JavaScript 编码水平,最终写出更加优秀、更具可维护性的代码。 阅读详情

欢迎访问 http://www.3body.tk/iblog

this指针的错误理解

在使用JavaScript做面向对象编程的时候,很多有基本面向对象概念的新手都会在不经意间将this指针指向了错误的位置而不自知。如下所示:

var Lily = function(id) {
    this.name = "lily";

    $("body").click(function() {
        $("#" + id).text(this.name + " is here!");
    });
}

上面的代码使用jquery的一些函数,本来的目的是在页面上点击时会在初始化Lily实例时传入的的元素上显示“lily is here”的文本。

但是如果运行这段代码你就会发现点击页面后显示的name为undefined,为什么this.name变成了未定义的变量呢? 此处正是由于this指针指向的对象发生了变化。

在JavaScript中无论何时,函数里的this都是指向这个函数的调用者。所以当运行到onclick事件的时候,由于触发的函数是绑定给body的,所以此时的this是指向body这个对象的,而body中并没有定义name属性,就会显示undefined。

上面是一个绑定监听事件的情形。同样的错误还容易出现在对象中使用setTimeout,设置callback进行回调, 使用全局函数等地方。

在JavaScript使用prototype实现的继承体系中,this指针指向函数的调用者这一特性也是在基类中设计抽象方法的关键。比如用JavaScript实现一个模板模式,在当子类通过调用父类的接口使用到基类中的抽象方法时,调用者是子类,所以当执行到this.abstractMethod()时,如果子类中覆写了此方法有自己具体的实现,就会执行子类的方法。

对于这个容易出现的错误只要在写代码时注意到哪些方法是有对象自身调用的,哪些方法是由外部对象,或全局对象调用的就可以避免。

有时候遇到对象找不到,未定义,或取值出现不正常的情况也要检查一下是不是当前的this指针与你认为的大相径庭了!

2013-3-18 22:48:20

最容易犯的JavaScript错误.doc 最容易犯的JavaScript错误.doc最容易犯的JavaScript错误.doc 立即下载

相关推荐

STM32+W5500实战:5分钟搞定FreeModbus TCP移植(附完整代码)

本文详细介绍了如何在STM32微控制器上,结合W5500以太网芯片,快速完成FreeModbus TCP协议栈的移植,构建稳定可靠的工业级Modbus TCP服务器。内容涵盖硬件连接、软件架构、驱动适配、核心移植代码实现及调试优化技巧,旨在提供可直接应用于实际项目的完整解决方案。

life6的博客 879

编写JavaScript时容易出错的几个地方

好久没写javascript了,今天写了段,结果调了好长时间才达到预期的效果,伤不起啊。 1、javascript代码没有得到调用,说明代码中有错误,不用怀疑工具,99.9%的可能是自己写错了; 2、声明变量用“var”关键字,而不是用“int”,对于写惯了Java代码的人,这是个常犯的错误; 3、document.getElementById();和 ...

weixin_33943347的博客 229

OpenModelica入门指南:从下载安装到第一个仿真模型(附常见问题解答)

本文提供OpenModelica开源项目的完整入门指南,涵盖从下载安装、界面熟悉到构建首个仿真模型的全过程。通过创建经典的阻尼震荡系统实例,详细讲解组件拖放、参数设置、仿真运行及结果分析,并附有常见问题解决方案,帮助工程师和研究人员快速上手这一强大的多领域物理系统建模与仿真工具。

weixin_29239279的博客 730

前端中容易犯低级错误的地方

由于自己基础比较薄弱,也可以说知识的深度不够,在写前端代码的时候,往往会出现这样那样的低级问题,以及低级错误,在这里我总结出来了,还是那句话,大神可以绕道了     1.关于页面中js文件和css文件的位置(前提是这样写),css文件尽量放在文件顶部,js文件尽量放在文件底部,不要轻易网里,放,编译器从上往下编译,容易出现元素都未初始化,就对元素操作的错误。     2.今天以

AlloyTeam-Zy 2259

Claude Code插件安装与VSCode深度集成实战指南

Claude Code是一款专为IDE设计的AI编程助手插件,其核心价值在于将自然语言意图转化为可运行代码,从而优化开发者认知带宽分配。它依赖Node.js运行时、git版本上下文和VSCode编辑器API三者协同工作,技术原理涉及本地进程通信、权限策略绕过、上下文感知补全等关键机制。该工具显著提升工程效率,适用于CLI开发、EXIF元数据处理、异步逻辑生成等典型JavaScript/TypeScript应用场景。本文聚焦Claude Code插件在VSCode中的真实落地链路,覆盖Windows/macO

weixin_34006468的博客 474

ESP32+ST7789 LCD屏实战:5分钟搞定中文显示与图片渲染(附完整代码)

本文提供了一份详细的ESP32驱动ST7789 LCD屏幕的实战指南。通过清晰的SPI硬件连接说明、ESP-IDF框架下的初始化代码,以及图片渲染与中文字库构建的核心算法,帮助开发者快速实现中文显示与图片渲染功能,并附有完整的代码示例和性能优化技巧。

weixin_29189377的博客 438

JavaScript 初学者容易犯的几个错误,你中招没?

JavaScript 是对初学者比较友好的一门编程语言,基本上花个半小时看下语法就能写出能运行的代码。JavaScript 是动态脚本语言,对数据类型没有太多的限制,写起来非常灵活。但正因为如此,初学者如果不深入了解语言本身,往往会犯一些错误,从而导致一些很难发现的 bug。 抛开 JavaScript 语言设计层面的问题不说,毕竟它是 Brendan Eich 当年用短短十天时间设计出来的,有点...

kaysonli的博客 270

AHB总线协议

1. 简介         AHB总线规范是AMBA总线规范的一部分,AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus)、ASB (Advanced System Bus)、APB (Advanced Peripheral Bus)。AHB用于高性能、高时钟频率的系统结构,典型的应用如ARM核与系统内

ivy_reny的专栏 8万+

JavaScript初学者最容易犯的错误(二)

(欢迎访问:http://www.3body.tk/iblog/) 对数组使用for…in语法 for…in 语句在w3cschool中的定义 “用于对数组或者对象的属性进行循环操作”。 for ... in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。 for…in 的语法: for (prop in obj) { //...do something

1433

【误码率仿真】基于matlab 小波变换OFDM误码率仿真

其中,与传统的 OFDM 相比,小波变换 OFDM 在进行调制和解调时,使用的是小波变换函数。需要注意的是,由于小波变换函数将频域信号转换为时域信号,因此与传统 OFDM 不同,小波变换 OFDM 中的信号需要在时域上添加循环前缀。与传统的 OFDM 不同,小波变换 OFDM 使用小波函数作为基函数,而非正弦函数作为基函数,因此可以在保持子载波正交性的同时,让子载波之间的带宽变得更加均匀。在频域进行信号加权,然后进行小波逆变换,得到时域信号。在接收端进行信号接收,去掉循环前缀并进行小波变换得到频域信号。

Fanjufei的博客 662

手把手教你学PCIE--所有 PF(Physical Function)共同管理和分配 VF

但具体如何分配和使用 VF 取决于硬件设计、驱动程序配置以及实际应用场景。

MHD0815的博客 1462

开发者最容易犯的13个JavaScript错误

开发者最容易犯的JavaScript错误,总结出13个。 这些当中可能少不了你犯的错误。 我们描述了这些陋习,并列出来解决办法,希望对开发者有帮助。 1.for…数组迭代的用法 Usage of for..in to iterate Arrays 举例: var myArray = [ “a”, “b”, “c” ]; var totalElements = myArray.length

coffeescript的专栏 679

Google Earth Engine(GEE)——MOD09A1/MOD11A2/MOD13A1不同的QA波段去云进行分析

​​​​​​​大多数光学卫星图像产品都带有一个或多个 QA 波段,允许用户评估每个像素的质量并提取满足其要求的像素。QA 波段最常见的应用是提取有关多云像素的信息并对其进行屏蔽。但是 QA 波段包含大量其他信息,可以帮助您从分析中删除低质量数据。通常,QA 频带中包含的信息存储为按位标志。在这篇文章中,我将介绍与位运算相关的基本概念,以及如何使用位掩码提取和屏蔽特定的质量指标。

此星光明博客 4575

总结下java经常犯的错误

编写代码是一种艺术,认识错误是我们代码改进的重要途径之一。以下情况并非大家都能碰到过,但希望提高代码质量的人都引以为戒。以下各种情况,都是初学者经常犯的错误。 1.1       字符串没有判断是否为空 1.1.1        直接插入数据库 这种情况经常出现在服务器的java代码中,当从用户输入的表单中获取用户输入的信息时,通常认为客户端输入的信息就是我们想要的信息,直接插入到数据库。结

u010865364的专栏 1302

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

JavaScript中常见的错误,你犯了几个?

  初学者在学JavaScript这门语言的时候,最害怕看到的,应该就是控制台出现的红色错误信息!其实解决这些错误并不难,这是大多数初学者难以跨越的一个心理障碍而已。   你只要认真看一看错误信息,其实解决错误是非常简单的。别说你英语不好,可以解决的问题,都不叫问题。   列举一些常见错误类型,大家可以看一看:   1、SyntaxError   语法错误   这应该是刚开始写代码最容易出现的错误了   2、TypeError   类型错误      这里要说明一下,错误信息为什么

qinge_Crazy的博客 1003

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

初学者学习Javascript很吃力怎么办?到底该如何学习Js?

Js给初学者的印象总是那么的“杂而乱”,相信很多初学者都在找轻松学习Js的途径。在这里给大家总结一些学习Js的经验,希望能给后来的学习者探索出一条“轻松学习Js之路”。 Js给人那种感觉的原因多半是因为它如下的特点: A:本身知识很抽象、晦涩难懂,如:闭包、内置对象、DOM。 B:本身内容很多,如函数库、对象库就一大堆。 C:混合多种编程思想。它里面...

diaozhu1028的博客 3165

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

初学者学习JAVASCRIPT很吃力怎么办?到底该如何学习JS?

        Js给初学者的印象总是那么的“杂而乱”,相信很多初学者都在找轻松学习Js的途径。在这里给大家总结一些学习Js的经验,希望能给后来的学习者探索出一条“轻松学习Js之路”。Js给人那种感觉的原因多半是因为它如下的特点:A:本身知识很抽象、晦涩难懂,如:闭包、内置对象、DOM。B:本身内容很多,如函数库、对象库就一大堆。C:混合多种编程思想。它里面不但牵涉面向过程编程思想,又有面向对象编...

Arno_Liu90 的博客 4875

Javascript容易犯的错误

Javascript写代码时容易犯的错误 切换变量0和1 // if判断可以这么写 let flag = 0; if (flag === 0) { flag = 1; } else { flag = 0; } // 也可以用三目运算符 flag = flag === 0 ? 1 : 0; // 也可以使用位异或(^) flag ^= 1; 一般我建议在js上是尽量少用位运算,为什么呢?因为位运算其实二进制数执行运算,包括与&、或|、异或^、非.

442

syntaxerror是什么错误_JavaScript中常见的错误

前言:初学者在学JavaScript这门语言的时候,最害怕看到的,应该就是控制台出现的红色错误信息!其实解决这些错误并不难,这是大多数初学者难以跨越的一个心理障碍而已。你只要认真看一看错误信息,其实解决错误是非常简单的。别说你英语不好可以解决的问题,都不叫问题。列举一些常见错误类型,大家可以看一看:1、SyntaxError语法错误这应该是刚开始写代码最容易出现的错误了错误原因:变量名以数字开头错...

weixin_39979159的博客 7747

主进程中发生javascript错误_JavaScript中常见的错误

前言:初学者在学JavaScript这门语言的时候,最害怕看到的,应该就是控制台出现的红色错误信息!其实解决这些错误并不难,这是大多数初学者难以跨越的一个心理障碍而已。你只要认真看一看错误信息,其实解决错误是非常简单的。别说你英语不好可以解决的问题,都不叫问题。列举一些常见错误类型,大家可以看一看:1、SyntaxError语法错误这应该是刚开始写代码最容易出现的错误了错误原因:变量名以数字开头错...

weixin_39992665的博客 4902

javascript错误_您可能会犯的javascript错误

javascript错误Today I am going to talk about common mistakes you may be making in your Javascript project.今天,我将讨论您在Javascript项目中可能犯的常见错误。 Javascript is one of the most popular language in the world but ...

weixin_26735419的博客 485
上一篇: 你的网站适合用Drupal搭建吗
下一篇: 正确的在ViewPager中使用Bitmap图像
凄凄迷人
博客等级 码龄21年 58粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值