js关键字与保留字的坑。

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

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

首先看下我们的代码:

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

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

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

这时候我们的输出又是正常的,所以问题的关键在于我们的top这个东西了。最后在祖师爷的指点下才发现,原来是top是js的关键字(或者保留字),就跟undefined一样,它们是只读的,所以我们不可以给它写入东西,这才导致我们把内容赋给top变量,最后输出的却是window。

所以以后一定要注意下,我们的变量名称不能乱起,特别是不要跟关键字保留字冲突,不然的话这种bug真的很难找出来。

时间: 2024-08-28 23:17:27

js关键字与保留字的坑。的相关文章

js 关键字和保留字

不能把关键字.保留字.true.false和null用作标识符. js中的关键字可用于表示控制语句的开始或结束,或者用于执行特定操作等.按照规则,关键字也是语言保留的,不能用作标识符.以下就是ECMAScription的全部关键字: break.else.new.var. case.  finally . return. void . catch  .for  .switch . while . continue.  function  .this . with .default . if . 

JS中的关键字和保留字

JavaScript中不能作为变量名的关键字和保留字总结: 1.js中的关键字: break case catch continue default delete do else finally for function if in instanceof new return switch this throw try typeof var void while with 2.js中的保留字: abstract boolean byte char class const debugger dou

[Python3 填坑] 003 关键字?保留字?预留字?

目录 1. print( 坑的信息 ) 2. 开始填坑 (1) 问题的由来 (2) 网上搜索 (3) 最终结论 (4) 后记 1. print( 坑的信息 ) 挖坑时间:2019/01/04 明细 坑的编码 内容 Py002-1 Python 的"关键字"与"保留字"有没有区别 2. 开始填坑 (1) 问题的由来 照理说,我不该这么折腾. 就我浅薄的知识而言,说到编程语言中的"关键字",最先想到的还是 C.可能是先入为主的关系,后来简短地接触过一

语法构成、关键字和保留字、变量

1.语法 1.1如果引入了外部js,那么在该script标签里不能再写js代码 <script src=""></script> 1.2区分大小写 1.3标识符组成开头:a(字母)._.$ 1.4不能把关键字,保留字,true false null作为标识符 2.变量 var a;//创建(声明)变量 var a=1;//创建变量,和变量初始化: a=1+a;//变量的操作 3.数据类型 var a;//创建变量 var a=1;//创建变量,和变量初始化: a

五分钟看懂js关键字this

this是js里面很常用的关键字,而灵活的js也赋予了这个关键字无穷的生命力,相信你也有被它糊弄的时候,我总结了一个6字原则,大部分场合都能清醒分辨this到底指向who,跟大家分享一下,欢迎指正. 谁调用指向谁! 首先介绍一个大boss: window, 他是一个隐形大侠,没有确定的调用者的时候,肯定是它出手, 也就是说,如果一个对象没有显性的调用者时,this指向的就是window. 先看下面的例子: var x = 10; function test(){ console.log("---

Javascript高级程序设计——语法、关键字、保留字、变量、数据类型

1.了解基本语法,JS大小写区分.注释风格.什么是严格模式等. 2.知道ES3和ES5的关键字和保留字大概有哪些,如果使用关键字会报什么错,使用保留字决定于特定浏览器引擎. 3.全局变量和局部变量的定义方法.为什么不推荐使用形如:message=”hi“这样的全局变量. 4.知道6种数据类型.typeof返回值等. 一些问题: a.如何判断一个变量是否定义或是否初始化? b.定义一个变量,准备用来保存对象,如何初始化? c.alert(undefined==null)输出什么? d.其他数据类型

JavaScript标识符与关键字和保留字

区分大小写 JavaScript中的一切(变量.函数名.操作符)都区分大小写.例如,变量名itbsl和变量名ITbsl是两个不同的变量. 标识符 所谓标识符,就是指变量.函数.属性的名字,或者函数的参数.标识符可以是按照下列格式规则组合起来的一或多个字符: 第一字符必须是一个字母.下划线(_).或一个美元符号($); 其它字符可以是字母.下划线.美元符号或数字: 注意: 不能把关键字.保留字.true.false和null用作标识符. 如何避免令人难堪的命名错误? 选择有意义的名称 标识符名称如

0101 JavaScript标识符、关键字、保留字

10.1 标识符 标识(zhi)符:就是指开发人员为变量.属性.函数.参数取的名字. 标识符不能是关键字或保留字. 10.2 关键字 关键字:是指 JS本身已经使用了的字,不能再用它们充当变量名.方法名. 包括:break.case.catch.continue.default.delete.do.else.finally.for.function.if.in.instanceof.new.return.switch.this.throw.try.typeof.var.void.while.wi

java 关键字与保留字

Java 关键字列表 (依字母排序 共51组),所有的关键字都是小写,在MyEclipse中都会显示不同的颜色: abstract, assert,boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, enum,extends, final, finally, float, for, if, implements, import, instanceof, int, i