神奇的window.name:不要声明全局变量name
来源:互联网 发布:淘宝禁止出售兴奋剂 编辑:程序博客网 时间:2024/04/29 01:25
在技术研讨中,偶然发现一个非常有意思的变量——window.name,这是一个window默认自带的属性,类型为“string”,不可改变其类型,也就是说,如果对其赋值,值必须为string类型,否则会自动调用值的toString方法,将值转换为string类型。
// 输出true,表明为window的自身属性console.log(window.hasOwnProperty('name'))// 输出为stringtypeof window.name// 更改其类型为numberwindow.name = 100// 依旧输出为stringtypeof window.name
从上面可以看出,实际应用中,如果在window的上下文下,声明了全局变量name,并将其指向其他类型,如Element,那一定会出现很多诸如“undefined”、“Uncaught TypeError:is not a function”的错误,如下:
// 即使是这样,也覆盖不了window.name的默认类型var name = document.body;// 添加DOM内容// 浏览器提示VM1446:1 Uncaught TypeError: name.appendChild is not a functionname.appendChild(document.createTextNode('Hello,World!'))// 输出stringconsole.log(typeof(name))
结论
千万不要在上下文为window的环境中声明全局变量name
0 0
- 神奇的window.name:不要声明全局变量name
- window.name
- window.name==window['name']
- window.name实现的跨域数据传输
- window.name实现的跨域数据传输
- window.name实现的跨域数据传输
- window.name实现的跨域数据传输
- window.name实现的跨域数据传输
- window.name实现的跨域数据传输
- window.name实现的跨域数据传输
- window.name实现的跨域数据传输
- window.name实现的跨域数据传输
- window.name实现的跨域数据传输
- window.name实现的跨域数据传输
- window.name做跨域应用
- js中 window[Name]
- 跨域--window.name + iframe
- name
- MES核心模块功能设计
- Java并发编程的艺术(六)——线程间的通信
- HttpClient4.5.2版本中POST提交中文参数时乱码问题解决方法
- Hadoop2.6.4版本64位编译
- spring事务管理几种方式
- 神奇的window.name:不要声明全局变量name
- 哪本书是对程序员最有影响、每个程序员都该阅读的书?
- Mysql命令大全
- 静态库、动态库
- Oracle 视图
- 基于Java Socket的自定义协议,实现Android与服务器的长连接(一)
- JSP获取当前系统时间
- 算法分析:谢尔排序(缩减增量排序)
- libcurl中curl_easy_setopt系列参数的设置