zoukankan      html  css  js  c++  java
  • 11.6 JavaScript 学习

    11.6

    JavaScript 允许重复声明变量,后声明的覆盖之前的

    var a = 1;
    var a = 'x';
    console.log(a);
    // 输出 'x'

    JavaScript 允许重复定义函数

    JavaScript 没有重载这个概念,它仅依据函数名来区分函数。

    后定义的同名函数覆盖之前的,与参数无关。

    function test() {
        console.log("test");
    }
    test();     //输出 "test arg0 + undefined"
    
    function test(arg1) {
        console.log("test arg" + arguments.length + " + " + arg1);
    }
    test(1,2);  //输出 "test arg2 + 1"

    实参个数如果比形参少,那么剩下的默认赋值为 undefined,如果实参传的比形参数量多,那么是全部都会被传进去的,只不过没有对应的形参可以引用(但可以用 arguments 来获取剩下的参数)。

    function test(arg1) {
        for(var i=0; i<arguments.length; i++) {
            console.log(arguments[i]);
        }
    }
    test(1,2); //输出 1 2

    变量与函数重名的时候,变量生效

    这涉及到了变量和函数的预解析:

    • 变量声明会被顶置,函数声明也会被顶置且比变量更先声明。
    • 变量的声明和赋值语句一起写时,JS引擎在解析时,会将其拆成声明和赋值2部分,声明置顶,赋值保留在原来位置。
    • 声明过的变量不会再重复声明。
    var a = 100;
    function a() {
        return "function";
    }
    console.log(a);     //输出 100
    console.log(a());   
    /*
    报错
    Uncaught TypeError: a is not a function
        (anonymous function) @test.html:9
    */

    JS 中有两种函数,一种是普通函数,一种是函数对象。下面的这种就是“函数对象”,它实际上是声明一个匿名函数,然后将该函数的 init 方法赋值给该变量。

    var a = 100;
    var a = function() {
        return "function";
    }
    console.log(a);
    /* 
    输出
    function() {
        return "function";
    }
    */
    console.log(a());   //输出 "function"

    函数与内部变量重名

    定义普通函数,即在 window 变量下,定义一个 key,它的名字为该函数名,值为该函数的地址。函数内部的 this 指向 window 对象。

    function a() {
        console.log(this);  //输出 window{...}
        this.a = 1;         //即 window.a = 1,此时window下的function a已经被该变量覆盖了。
        var a = 5;          //下面的这几个变量都是局部变量,仅在花括号范围内有效。  
        a = 10;
        var v = "value"
        return "function";
    }
    console.log(a);         //输出 function a {...}
    console.log(a());       //输出 "function"
    console.log(a);         //输出 1
    console.log(v);
    /*
    输出
    Uncaught ReferenceError: v is not defined
        (anonymous function) @ mycolor.html:15
    */
  • 相关阅读:
    iphone开发 使用TouchJSON框架 解析JSON
    iphone开发UIScrollView控件详解
    iPhone UIAlertView属性及使用方法
    vim文本编辑器使用大全 命令的解读
    iphone开发软件Xcode3.2.6破解免证书真机开发调试方案
    Objectivec语言 字符串类NSMutableString用法
    iphone开发 如何在NSMutableDictionary中放入基本数据类型
    找了很久,终于让我找到了,登陆界面登陆按钮随着输入法键盘的弹出而动态改变
    微软安全指南中心:Windows 2000
    在网络中安装、配置和使用SUS服务
  • 原文地址:https://www.cnblogs.com/wangdayang/p/14159455.html
Copyright © 2011-2022 走看看