使用var提升变量声明

使用var 定义变量还会提升变量声明,即使用var定义:function hh(){    console.log(a);    var a = ‘hello world‘;}hh()    //undefined

不使用var定义:function hh(){    console.log(a);    a = ‘hello world‘;}hh()    // ‘a is not defined‘

这就是使用var定义的变量的声明提前。
时间: 2024-11-05 13:50:23

使用var提升变量声明的相关文章

深入理解变量声明提升和函数声明提升

变量声明提升 1.变量定义 可以使用var定义变量,变量如果没有赋值,那变量的初始值为undefined. 2.变量作用域 变量作用域指变量起作用的范围.变量分为全局变量和局部变量.全局变量在全局都拥有定义:而局部变量只能在函数内有效. 在函数体内,同名的局部变量或者参数的优先级会高于全局变量.也就是说,如果函数内存在和全局变量同名的局部变量或者参数,那么全局变量将会被局部变量覆盖. 所有不使用var定义的变量都视为全局变量 3.函数作用域和声明提前 JavaScript的函数作用是指在函数内声

javascript 变量声明有var与无var 的区别

1.在函数作用域内 加var定义的变量是局部变量,不加var定义的就成了全局变量.使用var定义var a = 'hello World';function bb(){var a = 'hello Bill';console.log(a); }bb() // 'hello Bill'console.log(a); // 'hello world' 不使用var定义var e = 'hello world';function cc(){e = 'hello Bill';console.log(e)

函数声明的提升和变量声明提升

注:本文转自:http://blog.csdn.net/qq673318522/article/details/50810650仅做学习方便,没有任何商业目的: 变量声明提升 1.变量定义 可以使用var定义变量,变量如果没有赋值,那变量的初始值为undefined. 2.变量作用域 变量作用域指变量起作用的范围.变量分为全局变量和局部变量.全局变量在全局都拥有定义:而局部变量只能在函数内有效. 在函数体内,同名的局部变量或者参数的优先级会高于全局变量.也就是说,如果函数内存在和全局变量同名的局

变量声明和函数声明提升,及有关的面试题

var getName = function(){ console.log(2); } function getName (){ console.log(1); } getName(); 上面输出结果为2 function getName(){ //函数声明提升到顶部 console.log(1); } var getName; //变量声明提升 getName = function(){ //变量赋值依然保留在原来的位置 console.log(2); } getName(); // 最终输出

变量声明关键字var ,let,const

今天带大家了解的是比较有趣的几个变量声明关键字var,let,const. 我们在最初接触JS的时候,变量是我们重要的一个组成部分,在使用时规定必须要先进行声明,否则网页将会报错: console.log(b); //b is not defined ,表示我们并没有对变量进行声明,却要调用变量b,这时网页报错b未被定义,这时我们又了解到了声明关键字var的存在,利用声明关键字对变量进行声明: var a; console.log(a); //undefined,a未被赋值所以为undefine

ES6变量声明 ------ let and const

在ES5中,声明变量的方式只有一种, 那就是var, 如var mes ="hello", 但是用var声明变量有一个比较奇怪的地方,就是变量声明的提升,比如在函数中,无论我们声明变量的代码写在什么地方,它都是在函数顶部声明变量,在全局作用域下,则是在script标签顶部声明变量,这就有点郁闷了,因为按照我们正常的思维方式,我们代码是一行一行写的,只有用到某个变量的时候,才进行声明变量,并且声明变量后,只有它后面的代码才可以用,现在成了,我们在后面声明变量,在前面也可以用了,这不符合我

参数传递--函数声明与变量声明优先级?

javascript是一门解释性语言,自然没有编译过程,但在脚本执行之前会有语法检查和执行环境的构建,我们把这一过程姑且称为预处理吧. 一.函数声明,javaScript解析器把函数提升 fn();  //output  2 var fn= function(){ console.log(1); } function fn(){ console.log(2); } fn();  //output  1 首先,后面的fn()函数声明提前,所以第一个fn() 为2 其次,后面定义的fn()覆盖前面声

JS——变量声明、变量类型、命名规范

变量声明: JavaScript是一种弱类型语言,它的变量类型由它的值来决定,var是变量声明. 变量类型: 基本类型:number.string.boolean(布尔类型:var a=true/false;).undefined(未定义类型: var a;).null(空对象类型var ) 复合类型:object(对象类型) 命名规范: 1)区分大小写 2)第一个字符必须是字母.下划线.美元符号$ 3)其他字符可以是字母.下划线.美元或者数字 原文地址:https://www.cnblogs.

javascript变量声明和作用域提升

以前的知识总是忘,遇到代码又看不懂.要再复习一下,顺便记录一下. 1 add(1,2); 2 function add(a,b){ 3 alert(a+b); 4 } 代码能输出3,为什么不是按顺序执行?应该是  //add is not defined ... javascript的变量声明具有hoisting机制,JavaScript引擎在执行的时候,会把所有变量的声明都提升到当前作用域的最前面. 也就是说,function add(a,b){alert(a+b)}是一个函数声明,告诉我们有