zoukankan      html  css  js  c++  java
  • JS学习:第一周——NO.1预解释

    1.何为预解释?

      在当前作用域下,在JS代码执行之前,浏览器会对带var和带function的进行提前声明或定义;

      ①带var的:只声明不定义;告诉浏览器,有这么一个变量,但是并没有赋值

    ②带function的:声明+定义;不仅告诉浏览器,有这么一个变量,而且对变量进行了赋值;
    2.作用域链?
    当函数被调用的时候,会形成一个私有作用域,看私有作用域中,是否存在私有变量A:
    1)如果有私有变量A:那么整个作用域中的A,跟外界没有任何关系;所有该作用域中的A,都是私有变量;
    2)如果没有私有变量A:就会往上级作用域进行查找,找到的话,直接用,找不到继续找,一直找到window还没有,就会报错!;
    3.函数定义的3步骤?
    ①.开辟一个空间地址
    ②.把函数体中所有JS代码作为字符串放在这个空间中
    ③.把空间地址赋值给函数名
    4.函数执行的4步骤?
    ①.形成一个私有作用域
    ②.形参赋值
    ③.预解释
    ④.代码从上到下的执行
    几道面试题:

    function fn() {
            var i = 10;
    return function (n) {
    console.log(n + (++i));
    }
    }
    var f = fn();
    f(15);
    f(20);
    fn()(15);
    fn()(20);
    fn()(30);
    f(30);

    var num = 10;
    var obj = {
    num: 20,
    fn: (function (num) {
    this.num *= 2;
    num += 10;
    return function () {
    this.num *= 3;
    num += 1;
    console.log(num);
    }
    })(num)
    };
    var fn = obj.fn;
    fn();
    obj.fn();
    console.log(window.num, obj.num);

    var i=3;
    function fn(){
    i*=2;
    return function(n){
    console.log(n*(++i))
    }
    }
    var f=fn();
    f(3)
    fn()(3);
    f(4);
    fn()(3);
    菜鸟学习,望共同进步!
  • 相关阅读:
    k8s 集群节点重启后etcd Unhealthy 解决
    no matches for kind “Deployment” in version "extensions/v1beta1 问题解决
    go web 读书笔记 (go 与 web 应用)
    Linux设置ssh超时时间
    C++中继承方式
    C++中类中范围解析运算符::和点运算符(.)
    C++ 中类与结构体的区别
    C++中. 与 -> 运算符的区别
    C++之字符串
    C++之数组
  • 原文地址:https://www.cnblogs.com/HKCC/p/6041403.html
Copyright © 2011-2022 走看看