首页 > Web开发 > 详细

菜鸟入门指南?JS变量的优先级

时间:2016-02-28 10:55:47      阅读:257      评论:0      收藏:0      [点我收藏+]

  什么是优先级?就像css中的选择器,谁的权重越高,那么最终作用的就是谁,在js中变量也是有优先级的。

var a = 10;
function a(){
    console.log(1);
}
a(); //Uncaught TypeError: a is not a function

  这里为什么报错,因为变量a被函数a给覆盖了,因为函数的声明比变量的声明更早,其实这和变量声明提前有关系,如果你对这个感兴趣可以看js中的执行上下文,菜鸟入门基础。这篇文章

var a = 10;
function fn1(a){
    console.log(a);
}
fn1(2); //2

  函数中形参的优先级大于全局变量。

var a = 10;
function fn1(a){
    var a = 5;
    console.log(a);
}
fn1(2); //5

  函数中的变量优先级大于函数的形参,实际上这里的形参被函数中的变量a给覆盖了,不相信我们来看这段代码。

function fn1(a){
    a = 5;
    console.log(a);
}
fn1(2); //5
console.log(a); //a is not defined

  如果说函数中的变量a没有把函数中的形参a给覆盖的话,那么我们在函数中没有加var声明的就是全局变量,那么如果是全局变量的话,那么我们在外部打印这个变量a应该是正确的才对,但是这里却说a没有定义,使用可以说明函数中的变量a被形参给覆盖了。

function fn1(a){
    var a = 5;
    function a(){
        alert(‘追梦子‘);
    }
    console.log(a); //5
}
fn1(2);

  虽然fn中的函数a在变量a之后定义的,但是因为函数的声明比变量的声明提前所以函数a依然被变量a给覆盖了,所以打印的就是5

菜鸟入门指南?JS变量的优先级

原文:http://www.cnblogs.com/pssp/p/5224097.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!