zoukankan      html  css  js  c++  java
  • JS中有趣的知识

    1.分号与换行

    function fn1(){
        return {
            name: 'javascript'
        };
    }
    
    function fn2(){
        return 
        {
            name: 'javascript'
        };
    }
    
    var obj1 = fn1();
    var obj2 = fn2();
    
    console.log(obj1);
    console.log(obj2);
    

      这个例子看上去没有什么不同,但是实质上,确实是不同的。第一个输出结果为一个object ,而第二个输出结果为undefined。为什么?

    因为Js中是不需要分号这个东西的,第二个会被解析成:

    function fn2(){
        return ;
        {
            name: 'javascript'
        };
    }
    

      所以实质上返回的是一个undefined。

    2.五大类型中,关于null

    Js有五大数据类型boolean,string,number,undefined,object。而为什么

    typeof null
    

    会被解析为 object 呢?

    原因是在计算机底层存储数据时是以二进制格式进行存储的,如果前三位为0的话会被解析为object数据类型。而null的所有位数都为0,当解析null时,前三位先被解析,计算机错认为null为object类型,这属于计算机语言层面的一个bug。

    3.关于undefined

    undefined是Undefined数据类型的实例,虽然它在实际应用过程中并不能用来存储数据,但我们可以对他进行一些操作。

    当我们 对Undefined数据类型名进行类型检测时

        var Undefined = 10;
        var String=10;
        console.log(typeof Undefined);
        console.log(typeof String);

    显示结果为 :number number。这是因为Undefined并不是关键字和保留字。如果对关键字进行声明,会报错。

    当我们对他进行数据类型检测时

    console.log(typeof undefined)

    显示结果为undefined。

    当我们对其他数据类型进行类型检测时

    console.log(typeof Object);
    console.log(typeof Number);
    console.log(typeof String);
    console.log(typeof Boolean);

    显示结果却不是数据类型本身的类型,而是function;

    但是由于undefined并不是关键字和保留字,所以我们可以重新声明它

        var undefined = 10;
        var string=10;
        console.log(typeof undefined);
        console.log(typeof string);
    

    显示结果为:number  number;可见undefined具有不变值的属性。同时开头字母小写的

       var undefined = 10;
        var string=10;
        var boolean=10;
        var object=10;
        var number=10;
    
        console.log(typeof undefined);
        console.log(typeof string);
        console.log(typeof object);
    
        console.log(typeof boolean);
        console.log(typeof number);
    

    显示结果为:undefined number number number number 。可见同名且首字母小写的数据类型实例只有undefined一个,其他的都不是。

    4.在JavaScript中不存在重载函数

        有一定后端知识的同学都知道在C++和Java中都存在函数重载,

      而JavaScript中却不存在函数重载,如果出现了,后者会把前者覆盖。而且函数声明会提升。

    思维训练:有一个人花了800元买了一个游戏账号,又以900元卖出去,然后以1000元买回来,以1100卖出去,请问:这个人赚了多少钱?

    5.Javascript中声明的name变量的数据类型会被自动转成字符

    var name=10;
    
    console.log(typeof name)
    

     显示结果为 string。

    在window中有name属性--window.name为字符型。当我们声明name并赋值时,只不过是给window的name属性赋值而已,改变不了name的数据类型

  • 相关阅读:
    Ruby能否成为第二个Java
    攻防实践:一次入侵兼反入侵的实例
    微型PHP木马的探讨
    破解Session cookie的方法
    ASP马免杀工具—ASP万能溶剂
    微型PHP木马的探讨
    Ubuntu 8.04公布带给我们的商机
    Root logins are not allowed 的标题操持
    若何安装vixta之一若何哄骗Nero将vixta刻录成ISO光盘
    如何安排vixta之三Installing来源劈脸安排
  • 原文地址:https://www.cnblogs.com/bigharbour/p/11423268.html
Copyright © 2011-2022 走看看