我的处女作《Canvas系列教程》在我的Github上正在连载更新,希望能得到您的关注和支持,让我有更多的动力进行创作。

教程介绍、教程目录等能在README里查阅。

传送门:https://github.com/827652549/CanvasStudy

在做一滤镜工具小项目的时候无意间发现了一个bug,JavaScript中字符串数组赋值失败,不是每个字符串,却是字符。为了方便演示,给大家展示简单的代码:

var name = ['Tom', 'John', 'Susan'];
for(var i = 0; i < 3; i++) {alert(name[i]);
}

上面这段JavaScript代码本以为要分别弹出TomJohnSusan,但是浏览器运行后却弹出Tom。从理想状态中的字符串bug成了数组?

最后,当把‘name’改为name1后就完全没有问题了。

var name1 = ['Tom', 'John', 'Susan'];
for(var i = 0; i < 3; i++) {alert(name1[i]);
}

经过测试和查找后,发现这一切都是name的问题,即命名的问题,其实name已经被JavaScript使用过了。

所以顺便又查了JavaScript的保留关键字,供方便即使避免:

JavaScript 保留关键字


在 JavaScript 中,一些标识符是保留关键字,不能用作变量名或函数名。


JavaScript 标准

所有的现代浏览器完全支持 ECMAScript 3(ES3,JavaScript 的第三版,从 1999 年开始)。

ECMAScript 4(ES4)未通过。

ECMAScript 5(ES5,2009 年发布),是 JavaScript 最新的官方版本。

随着时间的推移,我们开始看到,所有的现代浏览器已经完全支持 ES5。


JavaScript 保留关键字

Javascript 的保留关键字不可以用作变量、标签或者函数名。有些保留关键字是作为 Javascript 以后扩展使用。

abstract arguments boolean break byte
case catch char class* const
continue debugger default delete do
double else enum* eval export*
extends* false final finally float
for function goto if implements
import* in instanceof int interface
let long native new null
package private protected public return
short static super* switch synchronized
this throw throws transient true
try typeof var void volatile
while with yield    

* 标记的关键字是 ECMAScript5 中新添加的。


JavaScript 对象、属性和方法

您也应该避免使用 JavaScript 内置的对象、属性和方法的名称作为 Javascript 的变量或函数名:

Array Date eval function hasOwnProperty
Infinity isFinite isNaN isPrototypeOf length
Math NaN name Number Object
prototype String toString undefined valueOf

Java 保留关键字

JavaScript 经常与 Java 一起使用。您应该避免使用一些 Java 对象和属性作为 JavaScript 标识符:

getClass java JavaArray javaClass JavaObject JavaPackage

Windows 保留关键字

JavaScript 可以在 HTML 外部使用。它可在许多其他应用程序中作为编程语言使用。

在 HTML 中,您必须(为了可移植性,您也应该这么做)避免使用 HTML 和 Windows 对象和属性的名称作为 Javascript 的变量及函数名:

alert all anchor anchors area
assign blur button checkbox clearInterval
clearTimeout clientInformation close closed confirm
constructor crypto decodeURI decodeURIComponent defaultStatus
document element elements embed embeds
encodeURI encodeURIComponent escape event fileUpload
focus form forms frame innerHeight
innerWidth layer layers link location
mimeTypes navigate navigator frames frameRate
hidden history image images offscreenBuffering
open opener option outerHeight outerWidth
packages pageXOffset pageYOffset parent parseFloat
parseInt password pkcs11 plugin prompt
propertyIsEnum radio reset screenX screenY
scroll secure select self setInterval
setTimeout status submit taint text
textarea top unescape untaint window

HTML 事件句柄

除此之外,您还应该避免使用 HTML 事件句柄的名称作为 Javascript 的变量及函数名。

实例:

onblur onclick onerror onfocus
onkeydown onkeypress onkeyup onmouseover
onload onmouseup onmousedown onsubmit

非标准 JavaScript

除了保留关键字,在 JavaScript 实现中也有一些非标准的关键字。

一个实例是 const 关键字,用于定义变量。 一些 JavaScript 引擎把 const 当作 var 的同义词。另一些引擎则把 const 当作只读变量的定义。

Const 是 JavaScript 的扩展。JavaScript 引擎支持它用在 Firefox 和 Chrome 中。但是它并不是 JavaScript 标准 ES3 或 ES5 的组成部分。建议:不要使用它

JavaScript中字符串数组赋值失败,不是每个字符串,却是字符。相关推荐

  1. JavaScript中的数组和字符串

    知识内容: 1.JavaScript中的数组 2.JavaScript中的字符串 一.JavaScript中的数组 1.JavaScript中的数组是什么 数组指的是数据的有序列表,每种语言基本上都有 ...

  2. c语言如何赋值空字符串,c语言中如何给字符串数组赋值

    c语言中如何给字符串数组赋值 1.问题 这是我写的 struct student { int x; char name[10]; }; void main() { student st: st.nam ...

  3. 如何在JavaScript中比较数组?

    本文翻译自:How to compare arrays in JavaScript? I'd like to compare two arrays... ideally, efficiently. 我 ...

  4. 遍历JavaScript中的数组

    在Java中,可以使用for循环遍历数组中的对象,如下所示: String[] myStringArray = {"Hello", "World"}; for ...

  5. javascript字典中添加数组_如何在JavaScript中使用数组方法:Mutator方法

    JavaScript中的数组由元素列表组成.JavaScript有许多有用的内置方法来处理数组.修改原始数组的方法称为mutator方法,返回新值或表示的方法称为accessor方法.在本教程中,我们 ...

  6. JavaScript中的数组创建

    JavaScript中的数组创建 本文转载自:众成翻译 译者:loveky 链接:http://www.zcfy.cc/article/713 原文:http://rainsoft.io/power- ...

  7. VB6中给数组赋值的限制

    (由于用得不是很多,所以干脆记下来免得下次用到时又忘了.) MSDN有个错误是"不能给数组赋值",即不能将整个数组指定给另一个数组. 而实际上有时行,有时又不行,刚刚写代码时又遇到 ...

  8. javaScript中创建数组的3种方式

    JS数组定义及详解 javascript如何定义数组? 直接上代码和截图 //javaScript中创建数组的3种方式 //方式1 var names = ["令狐冲", &quo ...

  9. 如何从JavaScript中的数组中删除虚假值

    There are a lot of ways to remove elements from an array in JavaScript, but what's the easiest way t ...

最新文章

  1. 北斗导航 | GNSS卫星导航天线在车载高精度定位领域中的应用与挑战
  2. linux篡改url命令,在Linux中更改Git远程URL(Git Remote URL)的方法
  3. 位于地下88米,一晚6000块,上海这家酒店房间内竟还有玄机!
  4. Java 简单爬虫 代码
  5. 用Protel 99 SE学习原理图的设计及pcb的绘制
  6. xt5 连接android auto,2021年凯迪拉克XT6将添加无线Apple CarPlay和Android Auto
  7. 从0开始,html5零基础入门教程,快来看看!
  8. 北斗卫星轨道有哪些?
  9. 进击的开发者!第二期SWTC社区开发者大赛拉开序幕
  10. 陌上红尘,可有摆渡人?
  11. 【自然语言处理】BERT 讲解
  12. freertos和ucos的区别
  13. jQuery框架的介绍以及基本用法--操作dom
  14. 【Verilog】【Vivado】计数器示例
  15. Nacos单机环境安装
  16. 易百教程wxpython_wxPython+opencv 打造自己的画图板
  17. android手机怎么同时登陆两个微信,安卓手机怎样可以同时登陆两个微信号?
  18. 【转帖】中国芯暗流涌动,龙芯/飞腾都在走什么样的路
  19. Vue Baidu Map组件: 点、线、多边形、圆形、撤销、返回
  20. ESP8266-Arduino编程实例-MCP23017并行IO扩展驱动

热门文章

  1. JavaScript点击button更改内容,清空页面
  2. Mathematica里面总有一些炫的特征
  3. 离散数学(二):命题公式的等值演算
  4. 双重差分法之安慰剂检验
  5. 【APICloud系列|36】 mobVerify免费短信验证码的实现
  6. CTF-AWD入门手册
  7. 【Linux】【Kernel】BUG: scheduling while atomic问题分析
  8. 数据结构哈夫曼树实现26个英文字符的编码和译码
  9. 判断图片色彩模式 CYMK || RGB
  10. Objective-c:写一份可测试的代码