js 中函数定义问题

2018-06-25 15:48:09 +08:00
 PoetAndPoem

现有两个代码片段,已定义全局变量 count=0。

var name=function(){ count++; }

var add = function(x, y){ return(x + y); }

使用 typeof 检测俩个变量,typeof(name)为 string,typeof(add)为 function。不知道其中的原因,请指教!

3141 次点击
所在节点    JavaScript
9 条回复
TomatoYuyuko
2018-06-25 16:30:19 +08:00
使用 name 作为变量名会出 bug,不信你把 name 换成别的试试,是浏览器问题
PoetAndPoem
2018-06-25 16:32:59 +08:00
找到问题了,f12 下 window 下的变量自带 name,数据类型为 string。而代码段并没有让 name 类型更改为 function。
PoetAndPoem
2018-06-25 16:34:27 +08:00
@TomatoYuyuko 感谢。
TomatoYuyuko
2018-06-25 16:34:53 +08:00
emmm,,,我也发现了,不要用 window 下的属性做变量名
ragnaroks
2018-06-25 21:39:07 +08:00
我没记错的话是因为 window.name 是个只读属性,换句话说,如果是个可写属性,不会出现这个问题
ragnaroks
2018-06-25 21:41:25 +08:00
查了下 mdn 并不是只读属性,但某种意义上有只读属性的特性,window.name 是窗口(标签页)的 name
mingyun
2018-06-25 22:22:22 +08:00
@TomatoYuyuko 大佬 666
tony0529
2018-06-26 09:15:24 +08:00
我昨个也遇到了 js 中用 name 命名出了莫名其妙的问题,还排查了半天。
steelz
2018-06-26 11:21:43 +08:00
用 let 定义就没这个问题了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/465690

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX