JavaScript易错知识点整理

yizhihongxing

JavaScript易错知识点整理

本文将整理出JavaScript中经常易错的知识点,包括但不限于变量作用域、数据类型、语法注意点等。通过阅读本文,你将能够更加熟练地使用JavaScript。

变量作用域

var声明变量的作用域

在JavaScript中,使用var声明的变量,其作用域为函数级作用域。这意味着在函数内部声明的变量,在函数外部是无法访问的。但是如果在函数内部使用了var声明的变量,在函数外部同样可以访问到这个变量,这是因为JavaScript有变量提升的机制。

示例:

function foo() {
  if (true) {
    var x = 10;
  }
  console.log(x); // 输出结果为10
}

foo();

在上面的示例中,函数内部使用var声明了一个x变量,在if语句块内进行了赋值操作。如果没有使用var进行声明的话,x变量的作用域仅限于if语句块内部。

let和const声明变量的作用域

在ES6中引入了let和const来声明变量,它们的作用域为块级作用域。这意味着在块级作用域内声明的变量,在块外部是无法访问的。

示例:

function foo() {
  if (true) {
    let x = 10;
    const y = 20;
  }
  console.log(x); // 报错:x未定义
  console.log(y); // 报错:y未定义
}

foo();

在上面的示例中,使用let和const声明的变量,其作用域仅限于if语句块内部。在块外部访问这些变量会报错。

数据类型

NaN

NaN是JavaScript中的特殊值,它表示“不是一个数字”。使用isNaN()函数可以判断一个值是否为NaN。但是需要注意的是,NaN与任何值都不相等,包括自己本身。

示例:

console.log(NaN == NaN); // 输出结果为false
console.log(isNaN(NaN)); // 输出结果为true
console.log(isNaN('abc')); // 输出结果为true

在上面的示例中,第一个console.log输出结果为false,这是因为NaN与任何值都不相等,包括自己本身。第二个console.log输出结果为true,这是因为NaN是唯一一个与自己不相等的值。第三个console.log输出结果也为true,这是因为字符串'abc'无法进行转换为数字,会被转换为NaN。

引用数据类型

JavaScript中存在着基本数据类型和引用数据类型两种数据类型。引用数据类型包括对象、数组、函数等。

引用数据类型在传递参数时,传递的是其在内存中的地址,也就是说,函数内部如果改变该参数,会对原对象产生影响。

示例:

function change(obj) {
  obj.name = 'Alice';
}

var person = {
  name: 'Bob'
};
change(person);
console.log(person); // 输出{name: 'Alice'}

在上面的示例中,定义了一个change函数用来改变对象的属性值。在函数外部声明了一个person对象,执行change函数后,person对象的name属性被改为了'Alice'。

语法注意点

三元表达式的注意点

在JavaScript中,三元表达式可以用来进行简单的条件判断。但是需要注意的是,三元表达式的判断条件部分需要使用严格相等运算符(===)。

示例:

var x = 1;
var result = x == 1 ? 'Yes' : 'No';
console.log(result); // 输出Yes

var y = false;
var result2 = y == false ? 'Yes' : 'No';
console.log(result2); // 输出Yes

var z = 0;
var result3 = z == false ? 'Yes' : 'No';
console.log(result3); // 输出Yes,这里需要注意

在上面的示例中,第一个和第二个三元表达式都能够正确地输出结果。但是第三个三元表达式输出了'Yes',这是因为JavaScript会进行类型转换,将数字0转换为false进行比较。所以在使用三元表达式时需要特别注意类型转换的问题。

for...in循环的注意点

在JavaScript中,可以使用for...in循环来遍历对象的属性。但是需要注意的是,在遍历时会遍历对象的原型链上的属性。如果只想遍历对象本身的属性,需要使用hasOwnProperty函数来判断。

示例:

var person = {
  name: 'Bob',
  age: 18
};

Object.prototype.gender = 'male';

for (var prop in person) {
  console.log(prop);
}
// 输出 name、age、gender

for (var prop in person) {
  if (person.hasOwnProperty(prop)) {
    console.log(prop);
  }
}
// 输出 name、age

在上面的示例中,第一个for...in循环遍历了person对象的name、age以及原型链上的gender属性。第二个for...in循环遍历了person对象的name、age属性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript易错知识点整理 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • Node.js API详解之 Error模块用法实例分析

    让我来为您详细讲解“Node.js API详解之 Error模块用法实例分析”的完整攻略。 概述 Error模块是Node.js的一个核心模块,提供了一些函数和类,用于创建和处理错误对象。在Node.js应用程序开发中,错误处理非常重要。使用Error模块可以更加精确地定位代码中的错误并进行有效的处理。 创建错误对象 要创建错误对象,可以使用Error类的构…

    JavaScript 2023年5月28日
    00
  • javascript获取select值的方法完整实例

    关于JavaScript获取Select的值,你可以按照下面的步骤实现: 第一步:获取Select元素 要获取Select元素,可以使用document.getElementById()方法,传入Select元素的ID作为参数,如下所示: let select = document.getElementById("mySelect"); …

    JavaScript 2023年6月10日
    00
  • JavaScript实现简单购物小表格

    下面是“JavaScript实现简单购物小表格”的完整攻略: 1.准备工作 在HTML中,首先要准备一个表格元素,代码如下: <table> <thead> <tr> <th>商品</th> <th>价格</th> <th>数量</th> <th…

    JavaScript 2023年6月11日
    00
  • JavaScript中闭包的写法和作用详解

    JavaScript中闭包的写法和作用详解 什么是闭包 闭包是指有权访问另一个函数作用域中的变量的函数。闭包是JavaScript中最强大的特性之一,也是最容易误用而降低性能的特性之一。 举个例子: function outer() { let name = "Bob"; function inner() { console.log(na…

    JavaScript 2023年6月10日
    00
  • Vue2.x响应式简单讲解及示例

    Vue2.x是一款流行的JavaScript框架,它提供了一套响应式方法,可以使我们的网页和数据变得更加动态化和实时化。以下是本文的完整攻略。 什么是响应式 在Vue中,响应式指的是将数据与UI绑定并保持同步的机制。当数据发生变化时,UI也会相应地更新。这种机制使得我们能够轻松地控制UI的变化,而无需担心数据处理。 Vue响应式的原理 Vue的响应式实现分为…

    JavaScript 2023年6月11日
    00
  • javascript学习笔记之10个原生技巧

    Javascript学习笔记之10个原生技巧 简介 这篇学习笔记将会介绍10个用Javascript技巧的原生方法。这些方法将会帮助你提高你的Javascript编程能力,让你写出简单、优雅、高效的代码。 1. 使用 Array.map() 进行数组的元素转换 Array.map() 方法可以将一个数组的所有元素都通过一个提供的函数进行转换。它不会改变原来的…

    JavaScript 2023年5月18日
    00
  • JS简单实现DIV相对于浏览器固定位置不变的方法

    下面是JS简单实现DIV相对于浏览器固定位置不变的方法的完整攻略: 步骤一:设置CSS样式 首先,我们需要在HTML页面中定义一个div,然后为该div设置CSS样式,使其固定在浏览器的某个位置。例如,我们可以设置该div的position属性为”fixed”,然后指定它距离浏览器顶部的距离为0px,即可使之固定在浏览器顶部。 HTML代码如下: <d…

    JavaScript 2023年6月10日
    00
  • javascript 玩转Date对象(实例讲解)

    Javascript 玩转 Date 对象(实例讲解) 日期和时间在 Javascript 中有着非常重要的地位,而 Date 对象则是用于处理日期和时间的核心对象。在本攻略中,我们将介绍 Date 对象的常用的方法和属性,并提供一些在实际项目中可能会用到的示例供参考。 初始化 Date 对象 在创建 Date 对象时,可以使用以下语句: var date …

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部