预解析知识点

预解析:提前解析代码,也就是在解析过程中会先将函数声明和变量声明提前解析。
作用域:局部能访问全局,全局不能访问局部。

 f();
    function f() {
        var num = 10 ;
        console.log(num) ;
    }
    

答案:10

 function f() {
        var num = 10 ;
        console.log(num) ;
    }
     f();

答案:10

function f() {
        console.log(num) ;
        var num = 10 ;
    }
    f();

答案:undefined

var num = 20 ;
    function f() {
        console.log(num) ;
        var num = 10 ;

    }
    f();

答案:undefined
f函数内操作步骤把声明提前了
{
    var num;
    console.log(num) ;
     num = 10 ;
}

 var num = 20 ;
    function f() {
        console.log(num) ;
    }
    f();

答案:20

 f();
    var num = 20 ;
    function f() {
        console.log(num) ;
    }

答案:undifined
操作步骤

var num ;//函数调用的时候会把函数的声明提升到作用域的上面
function f() {//变量的声明会提升到变量使用之前
     console.log(num) ;
}
f();
num = 20 ;

案例
对不同<script></script>标签对里面重名的函数,预解析不会冲突,只会执行该script标签内的函数调用各玩各的,script就是国家分界线,互不干扰。

console.log(f());
    function f() {
        console.log("函数");
    }
    var f = 1;
    console.log(f);

函数
undefined
1

console.log(f);
    function f() {
        console.log("函数");
    }
    var f = 1;
    console.log(f);

ƒ f() {
console.log("函数");
}
1
流程:
var f ;
function f() {
    console.log("函数");
}
console.log(f);
f = 1;
console.log(f);

var a = 18 ;
    f();
    function f() {
        var b = 9 ;
        console.log(a) ;
        console.log(b)  ;
        var a = '123' ;
    }

undifined
9
流程:
var a ;
a= 18 ;
function f() {
     var b ;
    var a ;
    b = 9 ;
    console.log(a) ;
    console.log(b) ;
    a = '123' ;
}
f();

f();
console.log(c) ;//9
    console.log(b) ;//9
    console.log(a) ;//报错
    function f() {
        var a = b = c  = 9;
        console.log(a) ;//9
        console.log(b) ;//9
        console.log(c) ;//9
    }

流程:
function f() {
    var a ;
    a=8;
    b =8;//没有var定义,所以b是全局变量;
    c = 8 ;//没有var定义,所以c是全局变量;
        console.log(a) ;
        console.log(b) ;
        console.log(c) ;
}
f();
console.log(c) ;
console.log(b) ;
console.log(a) ;



sort();中可以写一个回调函数来给数组指定排序的规则

 var arr = [1,6,9,5];//从小到大输出

        console.log(arr);
        arr.sort(function(a,b) {
            console.log("a 的值是"+a+"\tb的值是"+b+"<br>");
            return a - b ;
        });
        console.log(arr);

//
Array(4)
0: 1
1: 5
2: 6
3: 9
length: 4

 a 的值是6 b的值是1<br>
 a 的值是9 b的值是6<br>
 a 的值是5 b的值是9<br>
 a 的值是5 b的值是6<br>
 a 的值是5 b的值是1<br>

Array(4)
0: 1
1: 5
2: 6
3: 9
length: 4
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 简述JavaScript起源起源于美国的Netscape公司,原名为LiveScript,后改为JavaScrip...
    3ab670b99521阅读 8,239评论 0 0
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 6,215评论 0 2
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,415评论 1 45
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,413评论 2 17
  • 1、基本常识 浏览器的组成:1)shell部分 2)内核部分:(1)渲染引擎(语法规则...
    MrLsss阅读 2,669评论 0 4

友情链接更多精彩内容