js关键字与保留字的坑。
在写一个算法,迷宫出口的算法,作为一个有追求的前端,首先在解决算法的问题之前要把迷宫的图做的漂漂亮亮的才对得住自己的审美,所以我花了一个钟的时间去写这个地图。

不过这次我们说的并不是迷宫的解法,也不是css样式的问题。而是我踩的一个很意想不到的坑。js的关键字跟保留字的问题。
首先看下我们的代码:


我们主要讨论的是这个top变量,在for循环中我们声明了top变量,同时在下面的辅助方法中有些地方也声明了top变量,然后当我们console.log输出的时候就傻眼了,

这尼玛是什么,怎么全是window,然后我改了下代码,直接输出getTop的内容而不是赋给top变量,这时候好像正常了


是不是很奇怪?为什么top变量会出问题而直接输出不会出问题,我们再改一下

这时候我们的输出又是正常的,所以问题的关键在于我们的top这个东西了。最后在祖师爷的指点下才发现,原来是top是js一个window对象,它们是只读的,所以我们不可以给它写入东西,这才导致我们把内容赋给top变量,最后输出的却是window。
所以以后一定要注意下,我们的变量名称不能乱起,特别是不要跟window本身带的对象起冲突,也要注意下不要跟js关键字器冲突,不然的话这种bug真的很难找出来。
js关键字与保留字的坑。的更多相关文章
- 跟着9张思维导图学习Javascript js 关键字和保留字 css3中的BFC,IFC,GFC和FFC
跟着9张思维导图学习Javascript 学习的道路就是要不断的总结归纳,好记性不如烂笔头,so,下面将 po 出我收集的 9 张 javascript 相关的思维导图(非原创). 思维导图小ti ...
- js 关键字和保留字
不能把关键字.保留字.true.false和null用作标识符. js中的关键字可用于表示控制语句的开始或结束,或者用于执行特定操作等.按照规则,关键字也是语言保留的,不能用作标识符.以下就是ECMA ...
- JS规则 给变量取个名字(变量命名) 必须以字母、下划线或美元符号开头;区分大小写;不允许使用JS关键字或保留字
给变量取个名字(变量命名) 我们为了区分盒子,可以用BOX1,BOX2等名称代表不同盒子,BOX1就是盒子的名字(也就是变量的名字). 我们赶快给变量取个好名字吧!变量名字可以任意取,只不过取名字要遵 ...
- JS关键字和保留字汇总(小记)
ECMA-262 描述了一组具有特定用途的关键字.这些关键字可用于表示控制语句的开始或结束,或者用于执行特定操作等.按照规则,关键字也是语言保留的,不能用作标识符.以下就是ECMAScript的全部关 ...
- JS中的关键字和保留字
JavaScript中不能作为变量名的关键字和保留字总结: 1.js中的关键字: break case catch continue default delete do else finally fo ...
- [Python3 填坑] 003 关键字?保留字?预留字?
目录 1. print( 坑的信息 ) 2. 开始填坑 2.1 问题的由来 2.2 网上搜索 2.3 结论 2.4 后记 1. print( 坑的信息 ) 挖坑时间:2019/01/04 明细 坑的编 ...
- 五分钟看懂js关键字this
this是js里面很常用的关键字,而灵活的js也赋予了这个关键字无穷的生命力,相信你也有被它糊弄的时候,我总结了一个6字原则,大部分场合都能清醒分辨this到底指向who,跟大家分享一下,欢迎指正. ...
- Javascript高级程序设计——语法、关键字、保留字、变量、数据类型
1.了解基本语法,JS大小写区分.注释风格.什么是严格模式等. 2.知道ES3和ES5的关键字和保留字大概有哪些,如果使用关键字会报什么错,使用保留字决定于特定浏览器引擎. 3.全局变量和局部变量的定 ...
- JavaScript标识符与关键字和保留字
区分大小写 JavaScript中的一切(变量.函数名.操作符)都区分大小写.例如,变量名itbsl和变量名ITbsl是两个不同的变量. 标识符 所谓标识符,就是指变量.函数.属性的名字,或者函数的参 ...
随机推荐
- A. Case of the Zeros and Ones----解题报告
A. Case of the Zeros and Ones Description Andrewid the Android is a galaxy-famous detective. In his ...
- [Swust OJ 1026]--Egg pain's hzf
题目链接:http://acm.swust.edu.cn/problem/1026/ Time limit(ms): 3000 Memory limit(kb): 65535 hzf ...
- JSONToObejct 问题 part 1
直接截图,就明白了 前端的处理 这里用到 JSON2.stringify() 这个方法是将对象(object) 转换成 [{},{},+...+,{}] 这种键值对形式的数据,不然rows只是一个选 ...
- c语言求最大公约数和最小公倍数
求最大公约数和最小公倍数 假设有两个数a和b,求a,b的最大公约数和最小公倍数实际上是一个问题,得出这两个数的最大公约数就可以算出它们的最小公倍数. 最小公倍数的公式是 a*b/m m为最大公约数 因 ...
- iOS 获取字符串中的单个字符
要取到单个字符,就要知道字符串的编码方式,这样才能够定位每个字符在内存中的位置.但是,iOS的字符串编码是不固定的,因此,需要设置一个统一的编码格式,将所有其他格式的字符串都转化为统一的格式,然后就可 ...
- Week7(10月24日)
Part I:提问 =========================== 1.数据验证属性的练习. 按要求写出教室和课程的模型类. (1)教室类主键不自动增值,手工输入. (2)教室名字不超过10 ...
- VS Code开发调试ASP.NET Core 1.0
VS Code开发调试ASP.NET Core 1.0 使用VS Code开发调试ASP.NET Core 1.0,微软在今天凌晨发布了.NET Core 1.0,ASP.NET Core 1.0 与 ...
- git常用命令2
一. Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支git branch -r ...
- 前端上传组件 - Plupload
http://www.cnblogs.com/KTblog/p/4740852.html 效果: 起始界面. ------------- 可以上上传单个文件. ------------- 可以上传多个 ...
- 文件操作中的FLAG(O_RDONLY,O_WRONLY )的值
#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> void main(void) { ...