JS基础随笔

首先先看以下下面的一道面试题:

?

var num = 10;

fun();

functionfun()

{

  console.log(num);

  varnum =20;

}

在没有学习之前我会直接回答为10,现在学习JavaScript中的预编译概念知道了var关键字的提升概念以及function的声明概念知道了以上代码与下面代码等量:

?

var num;//全局作用域 遇到var和function 提升

 function fun() {

   var num ;  //局部做用户 遇到var 提升

   console.log(num);

   num =20;

 }

num = 10;

fun();

再看下面这道题:

?

//问题:为什么会出现下面的错误?

  //Uncaught TypeError:fnName is not a function

  console.log(fnName(1,2));

  varfnName = function(a,b) {

    returna + b;

  }

以上代码等同于以下代码:

?

var fnName;

  console.log(fnName(1,2));

  fnName = function(a,b) {

    returna + b;

  }

可以看到因为function在等号右面所以只会对var进行提升,从而会报“Uncaught TypeError:fnName is not a function”错误。

了解变量的作用域可以看以下代码:

?

f1();

    console.log(c);

    console.log(b);

    console.log(a);

    function f1() {

      var a = b = c = 20;

      console.log(c);

      console.log(b);

      console.log(a);

    }

对于var a=b=c=20; 这类连续赋值,在局部作用域内只会对a再声明,而b、c的作用域为全局作用域。所以只有全局作用域内的a报错为"Uncaught ReferenceError: a is not defined"。

以上这篇JS基础随笔(菜鸟必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 继承 一、混入式继承 二、原型继承 利用原型中的成员可以被和其相关的对象共享这一特性,可以实现继承,这种实现继承的...
    magic_pill阅读 4,695评论 0 3
  • 第一章: JS简介 从当初简单的语言,变成了现在能够处理复杂计算和交互,拥有闭包、匿名函数, 甚至元编程等...
    LaBaby_阅读 5,610评论 0 6
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,024评论 1 45
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,740评论 0 38
  • 听着杨教授的课,想着下学期我该如何实施教学才会更好?在两个新的教育边缘化群体中,我们学校占的比重最大的是留守...
    恋津子阅读 1,937评论 0 1