域解析

作者: sugar_sugar_ya | 来源:发表于2020-02-21 16:49 被阅读0次

函数变量及作用域

隐式全局变量:变量没有声明,直接赋值,执行到时,浏览器才会偷偷把变量提升为隐式全局变量

全局作用域:在函数声明之外的作用域

预解析:

  1. 所有的变量声明,都会提升到最顶部,但不会提升赋值
  2. 所有的函数声明,都会提升到最顶部,但不会提升函数的调用
  3. 如果同时有多个 var 声明的相同的变量,后面的 var 将被忽略
  4. 如果同时有多个同名的函数,后面的函数将会覆盖前面的函数
  5. 如果声明的变量和声明的函数同名,声明的函数将会覆盖声明的变量

词法分析3步骤:

  1. 先分析函数形参(默认值为undefined),再分析形参赋值(没有形参的直接忽略此步骤)
  2. 分析函数体中所有的变量声明:
    2.1 如果变量名与形参名相同时,直接忽略var;
    2.2 如果变量名与形参名不同时,就相当于声明了一个变量,如var foo,值为undefined;
  3. 分析函数体中所有的函数声明,
    3.1 如果函数名与变量名相同,函数将作为变量的值;
    3.2 如果函数名与变量名不相同,相当于var 函数名 = function 函数名 () {};

函数执行过程分为2步:

  1. 词法分析过程;
  2. 执行过程

栗子1:

function a(b) {
      console.log(b); 
      function b() {
       console.log(b); 
      }
      b();
    b=1
}
a(1);

栗子2:

function t3(greet) {
      console.log(greet); //?
      var greet = 'hello';
      console.log(greet); //?
      function greet() {
      };
      console.log(greet); //?
}
t3(null);

栗子3:

function test(a, b) {
      console.log(a); 
      console.log(b); 
      var b = 234;
      console.log(b); 
      a = 123;
      console.log(a); 
      function a() {
      }
      var a;
      b = 234;
      var b = function () {
      }
      console.log(a); 
      console.log(b); 
    }

test(1);

知识点补充:

arguments是一个对应于传递给函数的参数的类数组对象。(可以获取实参)

function fn(a,b) {
    console.log(arguments);
    console.log(arguments[0]);
    console.log(arguments[0] = 4);
    console.log(a);
}
fn(1,2,3);

栗子4:

a = 100;
function demo(e) {
    function e() {
    }
    arguments[0] = 2;
    console.log(e);//?
    if (a) {
       var b = 123;
    }
    a = 10;
    var a;
    console.log(b); //?
    f = 123;
    console.log(a); //?
 }

 var a;
 demo(1);
 console.log(a); //?
 console.log(f); //?

具名函数中的变量不能用来调用函数

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

相关文章

  • CentOS 7搭建DNS服务器

    安装bind 配置bind 添加正向解析域 添加反向解析域 启动bind 检查配置 本地测试解析 将本机的DNS修...

  • JS基础:作用域

    一、作用域概念-预解析规则、表达式 作用域: 域:空间,范围,区域……作用:读,写 浏览器——JS解析器: 在浏览...

  • 深入理解JS之Scope链

    作用域的创建 解析器在解析的过程中在生成AST的时候,同时构建其作用域。 查看其作用域链 如下代码:在控制台直接执...

  • 域解析

    函数变量及作用域 隐式全局变量:变量没有声明,直接赋值,执行到时,浏览器才会偷偷把变量提升为隐式全局变量 全局作用...

  • C++作用域解析符号 ::

    作用域解析符号,用于标志函数或变量的作用域,如上代码所示,该构造函数属于Myclass域下,明确标出所属。...

  • 域名解析服务

    域名解析成ip 树状 根域----顶级域(com,net,cn,edu,gov...)----次顶级域名(huaw...

  • DNS域名解析

    域名解析成ip #树状 根域----顶级域(com,net,cn,edu,gov...)----次顶级域名(hua...

  • 作用域、作用域链

    作用域 在 JavaScript 中, 作用域为可访问变量,对象,函数的集合。 作用域下浏览器的操作 预解析(找v...

  • nslookup

    命令作用 查询域名正向解析; 查询域名逆向解析; 查询域; 命令用法 直接查询 进入nslookup交互查询 常用...

  • DNS

    从域名中解析IP Address; PTR记录:从IP解析域名; SRV记录:指向域里面的资源; CNAME记录:...

网友评论

      本文标题:域解析

      本文链接:https://www.haomeiwen.com/subject/zolcqhtx.html