JavaScript中hoisting(悬置/置顶解析/预解析) 实例解释,全局对象,隐含的全局概念

<html><body><script type="text/javascript">//JavaScript中hoisting(悬置/置顶解析/预解析) 实例解释
    myname = "global"; // global variablefunction func() {//var myname; // 等同于 -> var myname = undefined;//alert(myname); // "undefined"//myname = "local";//alert(myname); // "local"//JavaScript中,你可以在函数的任何位置声明多个var语句,并且它们就好像是在函数顶部声明一样发挥作用,这种行为称为 hoisting(悬置/置顶解析/预解析)。//只要你的变量是在同一个作用域中(同一函数),它都被当做是声明的,即使是它在var声明前使用的时候。//当你使用了一个变量,在函数中又重新声明的话,就可能产生逻辑错误(可能不是预期使用全局变量,而是变成局部变量 undefined)//所有的变量声明当被悬置到函数的顶部了,myname被当做了函数的局部变量(尽管是之后声明的)
        alert(myname); // "undefined"var myname = "local";//如果这个前面不加var 则上面的myname使用全局变量弹出global
        alert(myname); // "local"
from_func_global = "test";}func();var my_var = "myvar";//每个JavaScript环境有一个全局对象,当你在任意的函数外面使用this的时候可以访问到。你创建的每一个全部变量都成了这个全局对象的属 性。//在浏览器中,方便起见,该全局对象有个附加属性叫做window,此window(通常)指向该全局对象本身。//JavaScript有隐含的全局概念,意味着你不声明的任何变量都会成为一个全局对象属性//通过var创建的全局变量(任何函数之外的程序中创建)是不能被删除的。//无var创建的 隐式全局变量(无视是否在函数中创建)是能被删除的。//隐式全局变量并不是真正的全局变量,但它们是全局对象的属性。属性是可以通过delete 操作符删除的,而变量是不能删除的// 试图删除
    alert(delete my_var); // false
    alert(delete myname); // true
    alert(delete from_func_global); // true// 测试该删除
    alert(typeof my_var); // "string"
    alert(typeof myname); // "undefined"
    alert(typeof from_func_global); // "undefined"</script></body>
</html>

JavaScript中hoisting(悬置/置顶解析/预解析) 实例解释,全局对象,隐含的全局概念...相关推荐

  1. WPF中WindowFormsHost始终置顶的有效解决方案

    windowFormsHost控件在一个位置时会优先显示,而且完全设置不了顺序,永远在最上边,WPF原生的控件无法对其遮盖,更别说透明了 四.解决WindowFormsHost的置顶问题 经过层层排除 ...

  2. javascript中的内置对象和数据结构

    文章目录 简介 基础类型 undefined Boolean和Boolean对象 Number和BigInt String Symbol null Object Function Date Array ...

  3. JavaScript中常用内置函数

    JavaScript中有两种函数:一种是语言内部事先定义好的函数叫内置函数,另一种是自己定义的函数.如下是常用的6种内置函数: eval函数 eval(expr)函数可以把一个字符串当作一个JavaS ...

  4. JavaScript中的内置对象

    一.什么是内置对象 js本身已经写好的对象,我们可以直接使用不需要定义它. 常见的内置对象有 Data.Array,Math.RegExp.Error.String.... Array高级API so ...

  5. Web前端技术分享:Javascript中的内置对象数组讲解

    有关js中的数组,很多小伙伴可能都会有疑问,尤其是面试的过程中有大量有关于原生数组的题,以及数组中的方法,及方法的返回值.是否会修改原数组等等.想要彻底解决这些问题,就要系统的解析数组的方法,那么今天 ...

  6. JavaScript(九):JavaScript中的内置对象

    一.对象的概念 对象是一种特殊的数据类型(object). 拥有一系列的属性和方法. 分为内置对象和自定义对象. 二.String对象 String对象用来支持对于字符串的处理. 1.属性 lengt ...

  7. JavaScript 中的内置对象——0606、0607笔记整理

    一.JavaScript String 对象 1.String 对象 String 对象也是字符串. var s1="abcdefg"; 常规定义的字符串: var s2=new ...

  8. JavaScript中的内置对象-8--4.date对象中-获取,设置日期时间的方法; 获取,设置年月日时分秒及星期的方法;...

    学习目标 1.掌握创建日期对象的方法 2.掌握date对象中获取日期时间的方法 3.掌握date对象中设置日期时间的方法 如何创建一个日期对象 语法:new Date(); 功能:创建一个日期时间对象 ...

  9. Javascript中的内置对象:RegExp对象

    一.定义RegExp RegExp对象用于存储检索模式.创建RegExp对象的检索模式如下: var myPattern=new RegExp(pattern,attributes); (1) 参数p ...

最新文章

  1. android build系统
  2. [BZOJ4811][Ynoi2017]由乃的OJ 树链剖分+线段树
  3. c/c++ g++默认编译调用成功,O2优化却发生Segmentation fault
  4. Requests库实战(四)---爬取肯德基餐厅地址信息
  5. spring cloud alibaba微服务原理与实战_SpringBoot+Cloud全家桶微服务实战项目之文档型数据库MongoDB四...
  6. Python模块_json pickle模块
  7. nova4e鸿蒙,为何如此执着麒麟芯片?华为首席战略官揭晓答案
  8. Python学习笔记——Python版本的选择
  9. Logisim元件用法详解一:Wiring 线
  10. Linux各类日志查看
  11. 计算机重装后如何添加打印机,系统重装后,电脑无法连接打印机怎么办?
  12. [SPOJ] COT2 树上莫队
  13. 安卓兼容7.0图库选择图片生成二维码
  14. 手机连上wifi不能上网
  15. 计算机用户名怎么改好听,电脑版优酷怎么改昵称
  16. 前缀和-python
  17. 养生指南 3 : 人的健康离不开两大要素 : 足够的气血 / 畅通的经络
  18. vue2的vue.config文件
  19. android 高德地图设置不能旋转_地图导航哪家强?
  20. H3C telnet配置要点

热门文章

  1. SAP MM ME21N 创建PO时报错 - Net price in CNY becomes too large – 之原因分析
  2. 深度丨2017年深度学习重大研究进展全解读
  3. 谁是深度学习框架一哥?2022 年,PyTorch 和 TensorFlow 再争霸
  4. 《GTA 5》走进现实!AI逼真还原游戏街景,还能“脑补”细节 | 英特尔出品
  5. 芯片的未来,靠这些技术了
  6. 深圳神经科学研究院院长谭力海: AI取代人脑? 不, 必须向人脑“学习”!
  7. 这两年的人工智能淘金热 真正赚钱的公司是这几家
  8. 18年你需要了解的15个人工智能统计数据
  9. 哈萨比斯导师:人工智能媲美人类或需两百年,神经学是条出路
  10. 阿里巴巴年度技术总结:人工智能在搜索的应用和实践