• 一道基础的for语句js编译过程


    引:一道基础js(出自pplive的一道面试题)

      <script type="text/javascript">
        var msg = "Hello";
        function great(name,attr){
          name = "Nick";
          var greating = msg + name + "!";
          var msg = "welcom";
          for(var i =0;i<10;i++){
            var next = msg + " your id is : " + i*2 + i;
          }
          console.log(arguments[0]);  //A
          console.log(arguments[1]);  //B
          console.log(greating);      //C
          console.log(next);        //D
        }
        great("Tom");
      </script>

      A : arguments[0]:即函数的第一个参数。Nick, 而不是Tom,函数内定义的同名变量会覆盖传入的参数。

      B : arguments[1]:很明显第二个参数undefined.

      C : greating = msg + name + "!";   msg根据作用域的含义,本function未找到,会到父层查找,So msg = "Hello"; ×××× 

        函数里面的所有变量其实都会变量声明提前,上面的

        var msg = "welcom"; 就等于

        var msg ;

        msg = "welcome";  // 所以这里应该是 undefinedNick! 而不是 HelloNick!

      D : var next = msg + " your id is : " + i*2 + i;

        这句,msg = welcome; 至于 i * 2 + i 应该是9*2+9吧?××××   那又想当然的错了,之前已经很多次的了解到,如何让一个数字转换为字符串?   

        如:var a = 123;

          var b = a +"";

          console.log(typeof b);//这里得到 string...说明任何一个变量 加上 一个字符串都会转化为字符串!!!

          所以上面的 next 应该是 "welcome your id is : 189"

  • 相关阅读:
    day 40 MySQL之视图、触发器、事务、存储过程、函数
    js多元运算
    继承以及Super
    Git工作流指南:Gitflow工作流
    JS中的逻辑运算符&&、||,位运算符|,&
    js的prototype理解
    JS对象—数组总结(创建、属性、方法)
    React-Native中props用法详解
    AJAX中同步和异步的区别和使用场景
    web前端之性能
  • 原文地址:https://www.cnblogs.com/ywwloveys/p/7752917.html
Copyright © 2020-2023  润新知