zoukankan      html  css  js  c++  java
  • js变量提升

    首先 javascript 是一种弱类型、动态的、解释型的脚本语言。
    弱类型:类型检查不严格,偏向于容忍隐式类型转换。 
    强类型:类型检查严格,偏向于不容忍隐式类型转换。 
    动态类型:运行的时候执行类型检查。 
    静态类型:编译的时候就知道每个变量的类型。 
    解释型:程序不需要编译,程序在运行的时候才翻译成机器语言,每执行一次都要翻译一次,因此效率比较低,但是跨平台性好。 
    编译型:程序在执行之前需要一个专门的翻译过程,把程序编译为机器语言的文件,运行时直接使用编译的结果就行了。 
    标记语言:标记语言的存在就是用来被读取(浏览)的,而其本身是没有行为能力的,在标记语言里你会看到<和>这些尖括号,这是用来写出“层次”和”属性”的,换句话说,它是被动的。并不具备与访问者互动的能力。 
    编程语言:它是具有逻辑性和行为能力,这是主动的。说通俗一点,它是有思想的。
    脚本语言:它介于标记语言和编程语言之间,脚本语言不需要编译,可以直接用,由解释器来负责解释。
     
    JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。
    JavaScript 中,变量可以在使用后声明,也就是变量可以先使用再声明。hoisting(变量提升)
     
    变量提升(把变量声明提升到当前执行环境的最顶端)
    <script type="text/javascript"> console.log(a);//输出结果 undefined var a=10; </script>
     
    函数声明提升 (函数声明提升直接把整个函数提到执行环境的最顶端) 
    foo(); function foo(){ console.log("aaa"); //aaa }
    var的话,只会提升函数名
    变量提升只提升函数名 而函数提升会提升整个函数题 注意:函数提升在变量提升上面。
     
    1、var a //变量声明,提升到作用域顶端
    2、var b = "test" //声明部分提升,赋值部分不会提升(变量定义)
    3、var c = function () {} //函数定义(函数表达式)部分提升
    4、function d(){} //函数声明,全部提升,优先级比变量提升高;名字相同的变量声明会被忽略

  • 相关阅读:
    【渗透攻防】深入了解Windows
    浅析B/S架构数据库连接方式
    剖析泄露你银行卡密码的钓鱼网站:真假“10086”
    红黑树的删除和加入节点
    Unity里包裹Debug,且不影响Debug的重定向
    Java向上转型和向下转型(附具体样例)
    Javascript 方法apply和call的差别
    普通androidproject转换为C/C++project之后,再还原成androidproject的解决方式
    初识双网卡
    js面向对象编程: js类定义函数时prototype和this差别?
  • 原文地址:https://www.cnblogs.com/limengyao/p/9549786.html
Copyright © 2011-2022 走看看