JavaScript中字符串数组赋值失败,不是每个字符串,却是字符。
我的处女作《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代码本以为要分别弹出Tom、John、Susan,但是浏览器运行后却弹出T、o、m。从理想状态中的字符串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中字符串数组赋值失败,不是每个字符串,却是字符。相关推荐
- JavaScript中的数组和字符串
知识内容: 1.JavaScript中的数组 2.JavaScript中的字符串 一.JavaScript中的数组 1.JavaScript中的数组是什么 数组指的是数据的有序列表,每种语言基本上都有 ...
- c语言如何赋值空字符串,c语言中如何给字符串数组赋值
c语言中如何给字符串数组赋值 1.问题 这是我写的 struct student { int x; char name[10]; }; void main() { student st: st.nam ...
- 如何在JavaScript中比较数组?
本文翻译自:How to compare arrays in JavaScript? I'd like to compare two arrays... ideally, efficiently. 我 ...
- 遍历JavaScript中的数组
在Java中,可以使用for循环遍历数组中的对象,如下所示: String[] myStringArray = {"Hello", "World"}; for ...
- javascript字典中添加数组_如何在JavaScript中使用数组方法:Mutator方法
JavaScript中的数组由元素列表组成.JavaScript有许多有用的内置方法来处理数组.修改原始数组的方法称为mutator方法,返回新值或表示的方法称为accessor方法.在本教程中,我们 ...
- JavaScript中的数组创建
JavaScript中的数组创建 本文转载自:众成翻译 译者:loveky 链接:http://www.zcfy.cc/article/713 原文:http://rainsoft.io/power- ...
- VB6中给数组赋值的限制
(由于用得不是很多,所以干脆记下来免得下次用到时又忘了.) MSDN有个错误是"不能给数组赋值",即不能将整个数组指定给另一个数组. 而实际上有时行,有时又不行,刚刚写代码时又遇到 ...
- javaScript中创建数组的3种方式
JS数组定义及详解 javascript如何定义数组? 直接上代码和截图 //javaScript中创建数组的3种方式 //方式1 var names = ["令狐冲", &quo ...
- 如何从JavaScript中的数组中删除虚假值
There are a lot of ways to remove elements from an array in JavaScript, but what's the easiest way t ...
最新文章
- 北斗导航 | GNSS卫星导航天线在车载高精度定位领域中的应用与挑战
- linux篡改url命令,在Linux中更改Git远程URL(Git Remote URL)的方法
- 位于地下88米,一晚6000块,上海这家酒店房间内竟还有玄机!
- Java 简单爬虫 代码
- 用Protel 99 SE学习原理图的设计及pcb的绘制
- xt5 连接android auto,2021年凯迪拉克XT6将添加无线Apple CarPlay和Android Auto
- 从0开始,html5零基础入门教程,快来看看!
- 北斗卫星轨道有哪些?
- 进击的开发者!第二期SWTC社区开发者大赛拉开序幕
- 陌上红尘,可有摆渡人?
- 【自然语言处理】BERT 讲解
- freertos和ucos的区别
- jQuery框架的介绍以及基本用法--操作dom
- 【Verilog】【Vivado】计数器示例
- Nacos单机环境安装
- 易百教程wxpython_wxPython+opencv 打造自己的画图板
- android手机怎么同时登陆两个微信,安卓手机怎样可以同时登陆两个微信号?
- 【转帖】中国芯暗流涌动,龙芯/飞腾都在走什么样的路
- Vue Baidu Map组件: 点、线、多边形、圆形、撤销、返回
- ESP8266-Arduino编程实例-MCP23017并行IO扩展驱动