V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
PoetAndPoem
V2EX  ›  JavaScript

js 中函数定义问题

  •  
  •   PoetAndPoem · 2018-06-25 15:48:09 +08:00 · 3108 次点击
    这是一个创建于 2103 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    9 条回复    2018-06-26 11:21:43 +08:00
    TomatoYuyuko
        1
    TomatoYuyuko  
       2018-06-25 16:30:19 +08:00
    使用 name 作为变量名会出 bug,不信你把 name 换成别的试试,是浏览器问题
    PoetAndPoem
        2
    PoetAndPoem  
    OP
       2018-06-25 16:32:59 +08:00
    找到问题了,f12 下 window 下的变量自带 name,数据类型为 string。而代码段并没有让 name 类型更改为 function。
    PoetAndPoem
        3
    PoetAndPoem  
    OP
       2018-06-25 16:34:27 +08:00
    @TomatoYuyuko 感谢。
    TomatoYuyuko
        4
    TomatoYuyuko  
       2018-06-25 16:34:53 +08:00
    emmm,,,我也发现了,不要用 window 下的属性做变量名
    ragnaroks
        5
    ragnaroks  
       2018-06-25 21:39:07 +08:00
    我没记错的话是因为 window.name 是个只读属性,换句话说,如果是个可写属性,不会出现这个问题
    ragnaroks
        6
    ragnaroks  
       2018-06-25 21:41:25 +08:00
    查了下 mdn 并不是只读属性,但某种意义上有只读属性的特性,window.name 是窗口(标签页)的 name
    mingyun
        7
    mingyun  
       2018-06-25 22:22:22 +08:00
    @TomatoYuyuko 大佬 666
    tony0529
        8
    tony0529  
       2018-06-26 09:15:24 +08:00
    我昨个也遇到了 js 中用 name 命名出了莫名其妙的问题,还排查了半天。
    steelz
        9
    steelz  
       2018-06-26 11:21:43 +08:00
    用 let 定义就没这个问题了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1048 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 22:35 · PVG 06:35 · LAX 15:35 · JFK 18:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.