Day10 JavaScript

简介: JavaScript

JavaScript

概述

JavaScript是一种轻量级的编程语言。

基本语法
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>


    <!-- 
        JS代码也可以编写在外部JS文件中,通过script标签引入
        写到外部文件中可以在不同的页面中同时引用,推荐使用

        script标签一旦用于引入外部文件,则里面编写的代码无效
        需要重新创建新的script标签

    -->
    <script text="javascript" src="./js/test.js"></script>

    
    <!-- JS代码需要编写在script标签中 -->
    <script text="javascript">


        // 控制浏览器发出一个警告
        alert("Hello JavaScript");

        // 在页面中输出一个内容
        // document.write() 可以向body中输出一个内容
        document.write("BanQ");

        // 向控制台输出内容
        console.log("半晴Miko");



        // JS注释
        // 单行注释
        /*
            多行注释
                注释的内容不会被执行,可以在源代码中查看
        */
        /*
         *  文档注释
         */

        /*
            注意:
                JS中严格区分大小写
                JS中每一条语句以分号(;)结尾,如果不写则浏览器会自动添加(不推荐)
                JS中会忽略多个空格和空行
        */
        // alert("BanQ");
        // Alert("BanQ"); 报错

    </script>

</head>

<body>

    <!-- 
        JS代码虽然可以写在标签的属性中,但是不推荐
     -->

    <!-- 可以将js代码编写到标签的onclick属性中 -->
    <button onclick="alert('BUTTON')">按钮</button>

    <!-- 也可以将js代码编写在超链接的href属性中 -->
    <a href="javascript:alert('A');">超链接</a>


</body>

</html>
字面量和变量和标识符
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <script text="javascript">

        /*
            字面量:
                指不可改变的值,例如:1,2,3,4
                字面量都是可以直接使用,但是我们一般都不会直接使用字面量

            变量:
                指可以任意改变的,变量可以用来保存字面量,例如:a=1
            
            可以通过变量的名称对字面量进行描述,例如 var age = 18;

        */

        /*
            声明变量:
                使用var关键字来声明一个变量
        */
        var a;

        /*
            给变量赋值:
                如果变量还没赋值,则输出undefined
        */
        a = 1;
        a = 2;

        // 同时声明变量和赋值
        var b = 3;
        var c,d = 4;
        

        console.log(a);
        console.log(b);
        console.log(c);
        console.log(d);


        /*
            标识符
                在]S中所有的可以由我们自主命名的都可以称为是标识符
                例如:变量名、函数名、属性名都属于标识符
                命名一个标识符时需要遵守如下的规则:
                    1.标识符中可以含有字母、数字、_、$
                    2.标识符不能以数字开头
                    3.标识符不能是ES中的关键字或者保留字
                    4.标识符一般都采用驼峰命名法(首字母小写,后面每个单词开头字母大写,其余小写)
            
                JS底层保存标识符时实际上是采用的Unicode编码, 所以理论上讲,所有的utf-8中含有的内容都可以作为标识符


        */
        var a_1_$ = 1;
        var myName = "BanQ";

    </script>


</head>

<body>
</body>

</html>
数据类型
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <script text="javascript">
        /*
            数据类型:
                指的就是字面量的类型
                在JS中一共有6种数据类型
                    基本数据类型:
                        String 字符串
                        Number 数值
                        Boolean 布尔值
                        Null 空值
                        undefined 未定义
                    引用数据类型:
                        Object 对象
            
            在JS中可以使用 typeof 来检查一个变量的数据类型

        */

        /*
            String
                字符串:
                    在JS中字符串需要使用引号("" / '')引起来
                    注意 "" 和 '' 不要混用,不能嵌套
                    在字符串中可以使用\作为转义字符
                        \' 表示 '
                        \" 表示 "
                        \\ 表示 \
                        \t 表示 制表符
                        \n 表示 换行
        */
        var str1 = "BanQ";
        var str2 = '半晴';
        var str3 = "\"半晴Miko\"";

        // 加上引号表示字符串,不加表示变量
        console.log(str1);
        console.log(str2);
        console.log(str3);
        console.log('Banqin');
        console.log(typeof 'Banqin'); //输出 string



        /*
            Number
                数值:
                    在JS中所有的数值都是Number类型
                    包括整数和浮点数(小数)

                    Number.MAX_VALUE 在JS中表示数字的最大值
                    如果超出最大值则输出 Infinity 表示正无穷 -Infinity 表示负无穷
                    
                    Number.MIN_VALUE 在JS中表示 大于0的最小值
                    如果超出最大值则输出 0


                    NaN是一个特殊的数字,表示Not A Number
                    使用typeof检查一个NaN也会返回numeber

                    在JS中如果使用浮点数进行运算则会得到一个不精确的结果


        */
        var num1 = 1;
        var num2 = 1.1;

        console.log(num1);
        console.log(num2);
        console.log(Number.MAX_VALUE); //输出 1.7976931348623157e+308
        console.log(Number.MIN_VALUE); //输出 5e-324
        console.log(Number.MIN_VALUE * Number.MIN_VALUE); //输出 0
        console.log(typeof NaN); //输出 numeber
        console.log(typeof num2); //输出 number
        console.log(0.1 + 0.2); //输出 0.30000000000000004



        /*
            Boolean
                布尔值:
                    主要用来做逻辑判断
                    只有两个值:
                        true: 表示真
                        false: 表示假

        */
        var bool1 = true;
        var bool2 = false;

        console.log(bool1);
        console.log(bool2);
        console.log(typeof bool1); //输出 boolean



        /*
            Null
                空值:
                    Null类型的值只有一个,就是null
                    null这个值专门用来表示一个为空的对象
                    使用typeof检查一个null值时,会返回object
        */
        var a = null;

        console.log(a);
        console.log(typeof a); //输出 object



        /*
            undefined
                未定义:
                    undefined类型的值只有一个,就是undefined
                    当声明一个变量时,但没有给它赋值,则它的值就是undefined
                    使用typeof检查一个undefined值时,会返回undefined
        */
        var b;

        console.log(b);
        console.log(typeof b); //输出 undefined



        /*
            强制类型转换
                指将一个数据类型强制转换为其他的数据类型
            类型转换
                指将其他的数据类型,转换为String Number Boolean


            将其他数据类型转换为String
                1.调用被转换的数据类型的toString()方法
                    该方法不会影响到原变量,它会将转换的结果返回
                    null和undefined 没有该方法 如果使用会报错

                2.调用String()函数,并将被转换的数据类型作为参数传递给函数
                    使用String()函数做强制类型转换时,
                        对于Number和Boolean实际上就是调用的toString()方法
                        但是对于null和undefined,就不会调用toString()方法
                            它会将null直接转换为"null"
                            它会将undefined直接转换为"undefined"
            
            
            将其他数据类型转换为Number
                1.调用Number()函数,并将被转换的数据类型作为参数传递给函数
                    字符串 -> 数字
                        如果是纯数字的字符串,则直接将其转换为数字
                        如果字符串中有非数字的内容,则转换为NaN
                        如果字符串是一个空串或者是一个全是空格的字符串,则转换为0
                    布尔 -> 数字
                        true转成1
                        false转成0
                    Null -> 数字 
                        0
                    undefined -> 数字
                        NaN

                2.这种方法专门用来转换字符串
                    parseInt() 把一个字符串转换为一个整数
                        将一个字符串中的有效的整数内容取出来,然后转换为Number
                        可以在parseInt()中传递一个第二个参数,来指定数字的进制
                            例如:var a = "070";
                                  a = parseInt(a,10); //输出 70
                                  a = parseInt(a,8); //输出 56

                    parseFloat() 把一个字符串转换为一个浮点数
                        将一个字符串中的有效的浮点数内容取出来,然后转换为Number
                    
                    如果对非String使用parseInt()或parseFloat()
                    它会先将其转换为String然后再操作



            将其他数据类型转换为Boolean
                1.调用Boolean()函数,并将被转换的数据类型作为参数传递给函数
                    数字 -> 布尔
                        除了0和NaN是false,其余的都是true
                    字符串 -> 布尔
                        除了空串是false,其余的都是true
                        
                    null 和 undefined 都是false

                    对象也会转换为true
                
                2.隐式类型转换:
                    为任意的数据类型做两次非运算,即可将其转换为布尔值
                    例如: var a = "hello"; a = !!a; //true


        */
        var c = 123;
        c = c.toString();
        console.log(typeof c);//输出 string

        var d = 123;
        d = String(d);
        console.log(typeof d);//输出 string

        var e = "123";
        var f = "ABC";
        var g = "   ";
        var h = true;
        var i = null;
        var j = undefined;
        var k = "123px";
        e = Number(e);
        f = Number(f);
        g = Number(g);
        h = Number(h);
        i = Number(i);
        j = Number(j);
        k = parseInt(k);
        console.log(e);//输出 123
        console.log(f);//输出 NaN
        console.log(g);//输出 0
        console.log(h);//输出 1
        console.log(i);//输出 0
        console.log(j);//输出 NaN
        console.log(k);//输出 123


        /*
            其他进制数:
                在JS中,如果需要表示16进制的数字,则需要以0x开头
                如果需要表示8进制的教字,则需要以0开头
                如果要要表示2进制的数字,则需要以0b开头
                    但是不是所有的浏览器都支持

        */
        var l = 0x123; 
        var m = 070; 
        var n = 0b10; 
        var o = "070"; //有些浏览器会当成8进制解析,有些会当成10进制解析
        o = parseInt(o);
        console.log(l);//输出 291
        console.log(m);//输出 56
        console.log(n);//输出 2
        console.log(o);//输出 070 或者 56 


    </script>

</head>

<body>

</body>

</html>
运算符
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <script text="javascript">

        /*
            运算符:
                也叫操作符, 通过运算符可以对一个或多个值进行运算,并获取运算结果
                比如: typeof 就是运算符,可以来获得一个值的类型
                    它会将该值的类型以字符串的形式返回
                        number string boolean undefined object

            
            算术运算符:
                当对非Number类型的值进行运算时,会将这些值转换为Number然后再运算

                (+)
                    可以对两个值进行加法运算,并将结果返回
                    如果对两个字符串进行加法运算,则会做拼串,会将两个字符串拼接为一个字符串,并返回
                    任何的值和字符串做加法运算,都会先转换为字符串,然后再和字符串做拼串的操作
                        我们可以利用这一特点,来将一个任意的数据类型转换为String
                        我们只需要为任意的数据类型+一个""即可将其转换为String
                        这是一种隐式的类型转换,由浏览器自动完成,实际上它也是调用String()函数

                (-)
                    可以对两个值进行减法运算,并将结果返回
                    
                (*)
                    可以对两个值进行乘法运算,并将结果返回

                (/)
                    可以对两个值进行除法运算,并将结果返回

                (%)
                    取模运算,取余数

            任何值做 - * / 运算时都会自动转换为Number
            我们可以利用这一特点做隐式的类型转换
            可以通过为一个值 -0 *1 /1 来将其转换为Number
            原理和Number()函数一样,使用起来更加简单

        */
        var a = 123;
        var result = typeof a;
        console.log(result);//输出 number

        var b = 123;
        var c = "123" + "456";
        b = b + 1;
        console.log(b);//输出 124
        console.log(c);//输出 "123456"



        /*
            一元运算符
                只需要一个操作数
                + 正号
                    正号不会对数字产生任何影响

                - 负号
                    负号可以对数字进行负号的取反
                
                I
                对于非Number类型的值,它会将先转换为Number,然后再运算
                可以对一个其他的数据类型使用+,来将其转换为number
                它的原理和Number()函数一样


        */
        var num1 = -1;
        console.log(num1);//输出 -1




        /*
            自增(++)
                通过自增可以使变量在自身的基础上增加1
                对于一个变量自增以后,原变量的值会立即自增1

                自增分成两种: 后++ 和 前++
                    无论是 后++ 还是 前++,都会立即使原变量的值自增1
                    不同的是后++ 和前++的值不同

                    a++的值等于原变量的值(自增前的值)

                    ++a的值等于原变量新值(自增后的值)

            自减(--)
                通过自减可以使变量在自身的基础上减1

                自增分成两种: 后-- 和 前--
                    无论是 后-- 还是 前--,都会立即使原变量的值自自减1
                    不同的是后-- 和前--的值不同

                    a--的值等于原变量的值(自减前的值)

                    --a的值等于原变量新值(自减后的值)

        */
        var num2 = 1;
        console.log(num2++);//输出 1
        console.log(num2);//输出 2
        console.log(++num2);//输出 3
        console.log(num2);//输出 3

        var num3 = 2;
        console.log(num3--);//输出 2
        console.log(num3);//输出 1
        console.log(--num3);//输出 0
        console.log(num3);//输出 0



        /*
            逻辑运算符
                非(!)
                    可以用来对一个值进行非运算
                    所谓非运算就是值对一个布尔值进行取反操作
                        true变false, false变true
                    如果对一个值进行两次取反,它不会变化
                    如果对非布尔值进行元素,则会将其转换为布尔值,然后再取反
                        所以我们可以利用该特点,来将一个其他的数据类型转换为布尔值
                        可以为一个任意数据类型取两次反,来将其转换为布尔值,
                        原理和Boolean()函数一样

                与(&&)
                    &&可以对符号两侧的值进行与运算并返回结果
                        两个值只要有一个值为false就返回false
                        只有两个值都为true时,才会返回true

                        短路特性:
                            第一个值为true,会检查第二个值
                            第一个值为false,不会检查第二个值

                或(||)
                    ||可以对符号两侧的值进行与运算并返回结果
                        两个值只要有一个值为true就返回true
                        只有两个值都为false时,才会返回false

                        短路特性:
                            第一个值为true,不会检查第二个值
                            第一个值为false,会检查第二个值
                
                && || 非布尔值的情况
                    对于非布尔值进行与或运算时, 
                    会向将其转换为布尔值,然后再运算,并返回原值
                        与运算: 如果两个值都为true,则返回后边的
                        与运算: 如果两个值中有false,则返回靠前的false
                        或运算: 如果第一个值为true,则直接返回第一个值
                        或运算: 如果第一个值为false,则直接返回第二个值

        */
        var num4 = true;
        console.log(!num4);// 输出 false
        console.log(true && true);// 输出 true
        console.log(false && true);// 输出 false
        console.log(false || true);// 输出 true
        console.log(false || false);// 输出 false
        console.log(1 || 2);// 输出 1
        console.log(1 && 2);// 输出 2



        /*
            赋值运算符
                =
                    可以将符号右侧的值赋值给符号左侧的变量
                +=
                    例如:a += 5; 等价于 a = a + 5;
                -=
                    例如:a -= 5; 等价于 a = a - 5;
                *=
                    例如:a *= 5; 等价于 a = a * 5;
                /=
                    例如:a /= 5; 等价于 a = a / 5;
                %=
                    例如:a %= 5; 等价于 a = a % 5;

        */
        var num5 = 10;
        num5 += 5;
        console.log(num5);//输出 15



        /*
            关系运算符
                通过关系运算符可以比较两个值之间的大小关系
                如果关系成立它会返回true,如果关系不成立则返回false

                > 大于号
                    判断符号左侧的值是否大于右侧的值
                    如果关系成立,返回true,如果关系不成立则返回false
                
                >= 
                    判断符号左侧的值是否大于或者等于右侧的值
                    如果关系成立,返回true,如果关系不成立则返回false
                < 
                    判断符号左侧的值是否小于右侧的值
                    如果关系成立,返回true,如果关系不成立则返回false
                <= 
                    判断符号左侧的值是否小于或者等于右侧的值
                    如果关系成立,返回true,如果关系不成立则返回false
                
                非数值的情况:
                    对于非数值进行比较时,会将其转换为数字然后在比较

                    如栗符号两侧的值都是字符串时,不会将其转换为数字进行比较
                    而会分别比较字符串中字符的Uhicode编码
                        比较字符编码时是一位一位进行比较
                        如果两位一样,则比较下一位
                    
                    任何值和NaN做任何比较都是false

        */
        console.log(2 > 1);//输出 true
        console.log(2 >= 2);//输出 true
        console.log(2 < 2);//输出 false
        console.log(2 <= 2);//输出 true



        /*
            在网页中使用Unicode编码
                &#编码;这里的编码需要的是10进制
                <h1>&#2620;</h1>

            在字符串中使用转义字符输入Unicode编码
                \u四位编码

        */



        /*
            相等运算符
                相等运算符用来比较两个值是否相等
                如果相等会返回true,否则返回false
            
                使用 == 来做相等运算
                    当使用==来比较两个值时,如果值的类型不同,
                    则会自动进行类型转换,将其转换为相同的类型然后再比较

                    undefined衍生自null 所以这两个值做相等判断时,会返回true

                    NaN不和任何值相等

                    可以通过isNaN()函数来判断一个值是否是NaN
                    如果该值是NaN则返回true,否则返回false
                
                使用 != 来做不相等运算
                    不相等用来判断两个值是否不相等
                    如果不相等返回true,否则返回false
                    不相等也会对变量进行自动的类型转换,如果转换后相等它也会返回false

                使用 === 来做全等运算
                    用来判断两个值是否全等,它和相等类似,不同的是它不会做自动类型转换
                    如果两个值的类型不同,直接返回false
                
                使用 !== 来做不全等运算
                    用来判断两个值是否不全等,它和不等类似,不同的是它不会做自动类型转换
                    如果两个值的类型不同,直接返回false

        */
        console.log(1 == 1);//输出 true
        console.log(1 != 1);//输出 false
        console.log(1 === 1);//输出 true
        console.log(1 !== 1);//输出 false



        /*
            条件运算符
                也叫做三元运算符
                语法:
                    条件表达式 ? 语句1 : 语句2;
                执行的流程:
                    条件运算符在执行时,首先对条件表达式进行求值
                    如果该值为true,则执行语句1,并返回执行结果
                    如果该值为false,则执行语句2,并返回执行结果
                
                如果条件的表达式的求值结果是一个非布尔值,
                会将其转换为布尔值然后再运算

        */
        console.log(2 > 1 ? "yes" : "no");//输出 yes



        /*
            ,运算符
                使用,可以分割多个语句,一般可以在声明多个变量时使用

        */
        var num6, num7 = 1;



        /*
            运算符的优先级
                在JS中有一个运算符优先级的表,
                在表中越靠上优先级越高,优先级越高越优先计算,
                如果优先级一样,则从左往右计算

                可以使用()来改变优先级
        */

    </script>


</head>

<body>

</body>

</html>
目录
相关文章
|
前端开发 JavaScript
70.【JavaScript 6.0】(六)
70.【JavaScript 6.0】
54 1
|
6月前
|
移动开发 JavaScript 前端开发
快速认识JavaScript
快速认识JavaScript
|
7月前
|
JavaScript 前端开发
JavaScript 中的提升是什么
JavaScript 中的提升是什么
35 0
|
JavaScript
JavaScript2
JavaScript2
42 0
|
移动开发 JavaScript 前端开发
|
JavaScript 前端开发 Java
09.初识javascript
09.初识javascript
63 0
|
JavaScript 前端开发
JavaScript 介绍
JavaScript 介绍
207 0
JavaScript 介绍
|
JavaScript 前端开发
JavaScript中的this
JavaScript中的this
JavaScript中的this
|
JavaScript 前端开发 Java
JavaScript1
JavaScript1
133 0
|
JavaScript 前端开发 程序员
解密 JavaScript 中的 this
我想在本文解释JavaScript中的 this,希望有助你理解 this 的工作机制。作为JavaScript程序员,学习 this 对于你的发展有很大帮助,可以说利大于弊。这篇文章的灵感来自于我最近的工作——我即将完成的书的最后章节——《JavaScript 应用程序设计 | JavaScript Application Design》(注意:现在你可以购买早期版本),我写的是关于scope工作原理的方面。
132 0
解密 JavaScript 中的 this

相关实验场景

更多