现有两个代码片段,已定义全局变量 count=0。
var name=function(){ count++; }
var add = function(x, y){ return(x + y); }
使用 typeof 检测俩个变量,typeof(name)为 string,typeof(add)为 function。不知道其中的原因,请指教!
现有两个代码片段,已定义全局变量 count=0。
var name=function(){ count++; }
var add = function(x, y){ return(x + y); }
使用 typeof 检测俩个变量,typeof(name)为 string,typeof(add)为 function。不知道其中的原因,请指教!
|
TomatoYuyukoJun 25, 2018
1
使用 name 作为变量名会出 bug,不信你把 name 换成别的试试,是浏览器问题
|
|
2
找到问题了,f12 下 window 下的变量自带 name,数据类型为 string。而代码段并没有让 name 类型更改为 function。
|
|
3
@TomatoYuyuko 感谢。
|
|
TomatoYuyukoJun 25, 2018
4
emmm,,,我也发现了,不要用 window 下的属性做变量名
|
|
ragnaroksJun 25, 2018
5
我没记错的话是因为 window.name 是个只读属性,换句话说,如果是个可写属性,不会出现这个问题
|
|
ragnaroksJun 25, 2018
6
查了下 mdn 并不是只读属性,但某种意义上有只读属性的特性,window.name 是窗口(标签页)的 name
|
|
mingyunJun 25, 2018
7
@TomatoYuyuko 大佬 666
|
|
tony0529Jun 26, 2018
8
我昨个也遇到了 js 中用 name 命名出了莫名其妙的问题,还排查了半天。
|
|
steelzJun 26, 2018
9
用 let 定义就没这个问题了
|