1. type 属性: 默认的 type 就是 javascript, 所以不必显式指定 type 为 javascript

  2. javascript 不强制在每个语句结尾加 “;” , javascript 会自动加分号, 但是在某些情况下会改变程序的语义, 所以最好主动加 “;”

  3. 两个相等运算符比较

      ‘==’ 相等( 值相等 ), 它会自动转换数据类型再比较, 很多时候会得到非常诡异的结果

      ‘===’ 严格相等( 数据类型和值都相等 ) , 它不会自动转换数据类型, 如果数据类型不一致, 返回false, 如果一致, 再比较

  4. NaN 与所有其他值都不相等, 包括它自己:

      NaN === NaN; // false

      唯一能判断 NaN 的方法是通过 isNaN() 函数

      isNaN(NaN); // true

  5. 浮点数比较

      浮点数在运算过程中会产生误差, 因为计算机无法精确表示无限循环小数。 要比较两个浮点数是否相等, 只能计算它们之差的绝对值, 看是否小于某个阈值:Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true

  6. null 和 undefined

      大多数情况下,我们都应该用 null , undefined 仅仅在判断函数参数是否传递的情况下有用

  7. 出于代码的可读性考虑,创建数组建议使用 '[ ]',而不使用 'new Array';

  8. 如果一个变量没有通过 'var' 声明就被使用,那么该变量就自动被声明为全局变量。使用 var 声明的变量则不是全局变量,它的范围就该被限制在该变量被声明的函数体内

  9. 启用 strict 模式(强制通过 var 声明变量)

  10. 多行字符串用反引号表示

  11. 使用模版字符串

  12. 要获取字符串某个指定位置的字符,使用类似 Array 的下标操作, 索引号从 0 开始。 字符串是不可变的, 如果对

    字符串的某个索引赋值, 不会有任何错误,但是也没有任何效果

  13. 直接给 Array 的 length 赋一个新的值会导致 Array 大小的变化

  14. 如果通过索引赋值时, 索引超过了范围, 同样会引起 `Array` 大小的变化, 但是不会有任何错误, 在编写代码时, 不建议直接修改 `Array` 的大小, 访问索引时要确保索引不会越界

  15. 数字 30 和字符串 '30' 是不同的元素

  16. slice() 的起止参数包括开始索引, 不包括结束索引。

  17. 如果不给 slice() 传递任何参数, 它就会从头到尾截取所有元素。 利用这一点, 我们可以很容易地复制一个 Array

  18. 空数组继续 `pop` 不会报错,而是返回 `undefined`

  19. `concat()` 方法并没有修改当前 `Array`, 而是返回了一个新的 `Array`,`concat()` 方法可以接收任意个元素和 `Array`, 并且自动把 `Array` 拆开, 然后全部添加到新的 `Array` 里

  20. `javascript` 对象属性名必须是一个有效的变量名。 如果属性名包含特殊字符, 就必须用 `''` 括起来

  21. 如果我们要检测 `xiaoming` 是否拥有某一属性, 可以用in操作符, 不过要小心, 如果 `in` 判断一个属性存在, 这个属性不一定是`xiaoming` 的, 它可能是 `xiaoming` 继承得到的

  22. 要判断一个属性是否是 `xiaoming` 自身拥有的,而不是继承得到的,可以用 `hasOwnProperty()` 方法

  23. JavaScript把 `null`、`undefined`、`0`、`NaN` 和空字符串 `''` 视为 `false`,其他值一概视为 `true`

  24. 由于 `Array` 也是对象, 而它的每个元素的索引被视为对象的属性, 因此, `for ... in` 循环可以直接循环出 `Array` 的索引

  25. `for ... in` 循环由于历史遗留问题, 它遍历的实际上是对象的属性名称, `for ... of` 循环则完全修复了这些问题, 它只循环集合本身的元素

容易混淆的JavaScript基础知识之语法部分的更多相关文章

  1. JavaScript基础知识----基本语法

    JavaScript 语句 JavaScript 语句向浏览器发出的命令.语句的作用是告诉浏览器该做什么. 分号 ; 分号用于分隔 JavaScript 语句. 通常我们在每条可执行的语句结尾添加分号 ...

  2. JavaScript 基础知识 - BOM篇

    前言 本篇文章是JavaScript基础知识的BOM篇,如果前面的<JavaScript基础知识-DOM篇>看完了,现在就可以学习BOM了. 注意: 所有的案例都在这里链接: 提取密码密码 ...

  3. Javascript基础知识总结一

    Javascript基础知识总结一 <!DOCTYPE html> <html> <head lang="en"> <meta chars ...

  4. 学习javascript基础知识系列第二节 - this用法

    通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...

  5. 学习javascript基础知识系列第三节 - ()()用法

    总目录:通过一段代码学习javascript基础知识系列 注意: 为了便于执行和演示,建议使用chrome浏览器,按F12,然后按Esc(或手动选择)打开console,在console进行执行和演示 ...

  6. 学习React之前你需要知道的的JavaScript基础知识

    在我的研讨会期间,更多的材料是关于JavaScript而不是React.其中大部分归结为JavaScript ES6以及功能和语法,但也包括三元运算符,语言中的简写版本,此对象,JavaScript内 ...

  7. (转)JAVA AJAX教程第二章-JAVASCRIPT基础知识

    开篇:JAVASCRIPT是AJAX技术中不可或缺的一部分,所以想学好AJAX以及现在流行的AJAX框架,学好JAVASCRIPT是最重要的.这章我给大家整理了一些JAVASCRIPT的基础知识.常用 ...

  8. JavaScript基础知识整理

    只整理基础知识中关键技术,旨在系统性的学习和备忘. 1.在 JScript 中 null 和 undefined 的主要区别是 null 的操作象数字 0,而 undefined 的操作象特殊值NaN ...

  9. Jquery源码中的Javascript基础知识(三)

    这篇主要说一下在源码中jquery对象是怎样设计实现的,下面是相关代码的简化版本: (function( window, undefined ) { // code 定义变量 jQuery = fun ...

随机推荐

  1. CDN分发

    CDN 是Content Delivery Network,即内容分发网络. 未完待续..

  2. WinForm 皮肤,自定义控件WinForm.UI

    WinForm.UI https://github.com/YuanJianTing/WinForm.UI WinForm 皮肤,自定义控件 使用方式: BaseForm: public partia ...

  3. 将字符串转换成C#认可的对象(有键值对的对象)

    var resobj = Newtonsoft.Json.JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JArray>(result ...

  4. react 之 flux

    [WangQi]---flux---[react]   一.什么是Flux Flux 是一种架构思想,专门解决软件的结构问题.它跟MVC 架构是同一类东西,但是更加简单和清晰. 二.flux的基本概念 ...

  5. [BZOJ3203] [SDOI2013]保护出题人(二分+凸包)

    [BZOJ3203] [SDOI2013]保护出题人(二分+凸包) 题面 题面较长,略 分析 对于第i关,我们算出能够打死前k个个僵尸的最小能力值,再取最大值就可以得到\(y_i\). 前j-1个僵尸 ...

  6. HDU 1494 题解(DP)

    题面: 跑跑卡丁车 Problem Description 跑跑卡丁车是时下一款流行的网络休闲游戏,你可以在这虚拟的世界里体验驾驶的乐趣.这款游戏的特别之处是你可以通过漂移来获得一种 加速卡,用这种加 ...

  7. mysql索引与补充

    一, 什么是索引 为什么要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此 ...

  8. python里的排序

    本篇文章主要讲: 自定义规则排序 多字段排序 开讲之前,先讲一些简单sorted()或者sort(),两者返回值不同!大家自行学习,不是本文的重点! sorted([5, 2, 3, 1, 4]) # ...

  9. bzoj3156 防御准备(斜率优化)

    Time Limit: 10 Sec  Memory Limit: 512 MB Input 第一行为一个整数N表示战线的总长度. 第二行N个整数,第i个整数表示在位置i放置守卫塔的花费Ai. Out ...

  10. webpack打包过程及开发过程

    1.传统: 1)分模块去定义js.js中要导出将来要被打包的方法module.exports 2)定义main.js入口文件(主文件).在此文件中,导入引用的js文件 var {add} = requ ...