【JavaScript笔记】JavaScript基础_结构和类型(1)

Page content

本想学Nodejs的,结果发现自己的JavaScript的基础太差,
(几年前看了一下基本语法后,就没有碰过了。) 而且很多资料大部分都是对JavaScript有所了解为前提。

只能先安心复习一下JavaScript的基础,然后再去学习Nodejs了…^^;;

1.JavaScript

还是按照惯例,先看看JavaScript在维基百科里是怎么解释的。

JavaScript(通常缩写为JS)是一种高级的、解释型的编程语言。

JavaScript是一门基于原型、头等函数的语言,是一门多范式的语言,它支持面向对象程序设计,指令式编程,以及函数式编程。  
它提供语法来操控文本、数组、日期以及正则表达式等,不支持I/O,比如网络、存储和图形等,但这些都可以由它的宿主环境提供支持。  
它已经由ECMA(欧洲电脑制造商协会)通过ECMAScript实现语言的标准化。  
它被世界上的绝大多数网站所使用,也被世界主流浏览器(Chrome、IE、Firefox、Safari、Opera)支持。

JavaScript在传统意义上被实现为一种解释语言,但在最近[何时?],它已经可以被即时编译(JIT)执行。
随着最新的HTML5和CSS3语言标准的推行它还可用于游戏、桌面和移动应用程序的开发和在服务器端网络环境运行 如Node.js。

JavaScript构成

  • ECMAScript: 描述了该语言的语法和基本对象
  • 文档对象模型(DOM): 描述处理网页内容的方法和接口
  • 浏览器对象模型(BOM): 描述与浏览器进行交互的方法和接口

2.JavaScript代码结构

javascript一般在html里的header里写,如下:

<!DOCType html>
<html>

<head>
    <script type="text/javascript">
        console.log("---------------javascript 语法测试-----------------");
    </script>
</head>

<body>
    <!-- 可以这么加javascript,但是为了可读性不建议这么加 -->
    <button onclick="alert('点我了吗?');">点我</button>
    <a href="javascript:alert('怎么我也点了?');">点我一下</a>
</body>

</html>

也可以引用外部js文件:

outjs.js =>

document.write("我是外部js文件!");

jshtml.html =>

    <script type="text/javascript" src="outjs.js">
        console.log("----------------外部js文件测试----------------");
        console.log("看看界面上有没有外部文件的提示");
    </script>

3.JavaScript的基本数据类型

JavaScripty有6种数据类型。String,Number,Boolean,Null,Undefined,Object。
具体的方式直接用代码看看:

3.1 String(字符串)

    <script type="text/javascript">
        console.log("------------------String----------------------");

        var str = "hello " + "world!";
        console.log("str:", str);   //str: hello world!

        str = 123
        console.log("str:", str);       //str: 123

        str = "特殊符号\",\\, \'"; // \n \t \\ \', \"
        console.log("str:", str);       //str: 特殊符号",\, '

        var c = "123";
        console.log("c.toString():", c.toString());   //c.toString(): 123
        console.log("String(c):", String(c));   //String(c): 123

        // console.log("null.toString():", null.toString());   报错
        console.log("NaN.toString():", NaN.toString());   // NaN.toString(): NaN
        // console.log("undefined.toString():", a.toString());   报错

        console.log("String(null):", String(null));  // String(null): null
        console.log("String(NaN):", String(NaN));   // NaN.toString(): NaN
        console.log("String(undefined):", String(undefined));   // String(undefined): undefined
    </script>

3.2 Number(数值)

    <script type="text/javascript">
        console.log("------------------Number----------------------");

        var num = 12;
        console.log("num type:", typeof num);    //num type: number
        console.log("num:", num);       //num: 12

        var strNum = "12";
        console.log("strNum type:", typeof strNum);  //strNum type: string
        console.log("strNum:", strNum);     //strNum: 12

        // Number.MAX_VALUE => 1.7976931348623157e+308
        // Number.MIN_VALUE => 5e-324
        // Number.MAX_VALUE * 10 => Infinity 正无穷大  -Infinity 负无穷大
        console.log("Infinity:", Number.MAX_VALUE * 10);    //Infinity: Infinity
        console.log("Infinity type:", typeof Infinity);     //Infinity type: number

        //Nan => Not A Number 也是 number类型
        console.log("NaN:", "abc" * "def");         //NaN: NaN
        console.log("NaN type:", typeof NaN);       //NaN type: number

        //小数点计算问题
        console.log("0.1 + 0.2 = ", 0.1 + 0.2);     //0.1 + 0.2 =  0.30000000000000004

        console.log("Number(Infinity):", Number(Infinity));         //Number(Infinity): Infinity
        console.log("Number(NaN):", Number(NaN));                   //Number(NaN): NaN
        console.log("Number(null):", Number(null));                 //Number(null): 0
        console.log("Number(undefined):", Number(undefined));       //Number(undefined): NaN

        console.log("parseInt('123px'):", parseInt('123px'));       //parseInt('123px'): 123
        console.log("parseInt('123.56'):", parseInt('123.56'));     //parseInt('123.56'): 123
        console.log("parseInt(123.56):", parseInt(123.56));         //parseInt(123.56): 123
        console.log("parseInt(null):", parseInt(null));             //parseInt(null): NaN
        console.log("parseInt(NaN):", parseInt(NaN));               //parseInt(NaN): NaN
        console.log("parseInt(undefined):", parseInt(undefined));   //parseInt(undefined): NaN
        console.log("parseInt(123.56px):", parseFloat('123.56px'));       //parseInt(123.56px): 123.56
        console.log("parseInt(123.56.78):", parseFloat('123.56.78'));      //parseInt(123.56.78): 123.56

        console.log("parseInt('123px',10):", parseInt('123px', 10));       //parseInt('123px'): 123 后面的参数标识进制(这里说的是10进制)
        // 0x 16进制
        // 0 8进制
        // 0b 2进制
    </script>

3.3 Boolean(布尔值)

    <script type="text/javascript">
        console.log("------------------Boolean----------------------");

        var bool = true;
        console.log("bool type:", typeof bool);     //bool type: boolean
        console.log("bool:", bool);         //bool: true

        /*
            数字除了0和NaN是false, 其他都是true;
            字符串除了空字符串都是true;
            null和undefined都是false;
            Object对象转换为true;
        */

        console.log("bool:", Boolean(1));         //bool: true
        console.log("bool:", Boolean(0));         //bool: true
        console.log("bool:", Boolean("true"));         //bool: true
    </script>

3.4 Null(空值)

    <script type="text/javascript">
        console.log("------------------Null----------------------");

        console.log("null:", null);         //null: null
        console.log("null type:", typeof null);     //null type: object
    </script>

3.5 Undefined(未定义)

    <script type="text/javascript">
        console.log("------------------Undefined----------------------");

        console.log("undefined:", undefined);         //undefined: undefined
        console.log("undefined type:", typeof undefined);     //undefined type: undefined
    </script>

3.6 Object(对象:引用类型)

可以参考后续文章
【JavaScript笔记】JavaScript基础_Object对象(4))


欢迎大家的意见和交流

email: li_mingxie@163.com