2018.12.6

2018-12-10  本文已影响0人  废废_siri

JavaScript来源

网景公司为了解决表单验证问题。


JavaScript组成

-ECMAscript:由ECMA(欧洲计算机制造者协会)定义标准。
-DOM(文档对象模型):由W3C定义标准。
-BOM(浏览器对象模型):由firefox来定义标准。


JavaScript简介

JavaScript是互联网上最流行的脚本语言,可用于Web和HTML,更广泛应用于服务器、pc端、移动端。一般运行在宿主环境(如:浏览器)中。
特点:
JavaScript是一种轻量级的编程语言(编程语言:有分支、有循环)。
JavaScript是一种动态语言(一个变量可以持有任意类型的值)。
JavaScript是一种脚本语言,由浏览器解释执行。
JavaScript是一种解释型语言,边解释边执行。


JavaScript的引入方式

1.方法一
可以将JavaScript代码放在<head>中或</body>标签之前。放在<head>中或</body>标签之前的JavaScript代码需要用<script></script>标签包裹起来。并且插入到HTML中的JavaScript代码无数量限制。
2.方法二
单独创建一个JavaScript文件,扩展名为.js。将编写好的js代码引入到HTML的<head></head>标签中。引入js的格式为<script src="js文件路径"></script>,将<script src="js文件路径"></script>放在<head>标签中。


JavaScript输出--write

<!DOCTYPE html>
<html lang="zh-cn">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>demo1</title>
    <!-- 写在head标签中的js代码 -->
    <script>
        document.write("写在head标签中的js代码");  //文档输出
        document.write("<h1>h1标签中的内容</h1>"); //输出的内容也可以插入html标签
    </script>
    <!-- 引入到html中的js代码 -->
    <script src="../JS/demo1.js"></script>
</head>

<body>
</body>
<!-- 写在body后的js代码 -->
    <script>
        document.write("写在body后的js代码");  //文档输出
    </script>
</html>

注:两条性能优化的规则
-样式表一定要以<link>标签的形式放在<head>中。
-JS一定要以<script>标签的形式放在html文档的底部(ps:也就是</body>之前)。


JavaScript语法

-语句的作用:告诉浏览器应该做什么。
-分号:分号可选,可写可不写。分号在一条语句的末尾。
-js代码:按编写代码的顺序执行(从上到下,从左到右扫描)。
-js区分大小写
效果图


image.png
<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>demo2</title>
    <!-- 根据以下顺序执行代码 -->
    <script>
        document.write("我在前面");
    </script>
    <br>
    <script>
        document.write("我在中间");
    </script>
    <br>
    <script>
        document.write("我在后面");
    </script>
</head>
<body>
</body>
</html>

-标识符:必须以字母、下划线或美元符$符号开始。
-编码时对大小写敏感。
-空格:js会保留一个空格,多余的空格会被忽略。
-保留字


JavaScript注释

-单行注释:用//注释内容。
-多行注释:用/注释内容/(多行注释不能嵌套)

<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>注释 demo</title>
</head>
<body> 
</body>
<script>
        //document.write("hello");        //单行注释
        /*document.write(1);
        document.write(2);
        document.write(3);*/              //多行注释
    </script>
</html>

JavaScript基础--值

值分为两大类:
-基本数据类型(String、Number、Boolean、Undefined、Null)
-引用数据类型(Object、Array、Function)
字面量:


QQ截图20181210195207.png

JavaScript基础--变量

变量是存储数据的容器。通过关键字var来声明变量,变量名必须以$、_、字母开头。不能使用关键字、保留字。一般采用驼峰命名法(如:firstName),第二个单词的首字母大写。


image.png
image.png
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>variable demo</title>
</head>
<body>
</body>
<script>
            var $1 = 10;    //变量名以$符号开始
            var _2 = 20;    //变量名以_符号开始
            var a = $1 + _2; //变量名以字母开始
            document.write(a);
    </script>
</html>

JavaScript基础--引用数据类型

引用数据类型包括:函数(Function)、对象(Object)、数组(Array)。后面会详写。


JavaScript基础--基本数据类型

字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(undefined)、Symbol (ES6中添加的类型)。可以通过赋值为null的方式清除变量。当用关键字var定义变量时,若没有给变量赋初始值,那么变量的数据类型为undefined。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>DataType demo</title>
</head>
<body>   
</body>
<script>
        var a = "六";       //数据类型为字符串
        var b = 1;          //数据类型为数字
        var flag = true;    //数据类型为布尔
        var arr = [1,2,3]   //数据类型为数组,取数据时下标从0开始
        var arr = new Array("我","你","他");  //数据类型为数组
        var arr = new Array();
        arr[0] = "我是第一个数据";
        arr[1] = "我是第二个数据";
        arr[3] = "我是第三个数据";
        document.write(arr[0]);
        var c = null;       //数据类型为空
        b = null;           //将变量b赋值为null
        document.write(b);  
    </script>
</html>

-typeof(a)/typeof a 返回值的数据类型,注意:是值的数据类型,而不是变量的。js中只有值才持有数据类型。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>基本数据类型</title>
</head>
<body>
    <h1>JS的基本数据类型</h1>
    <ul>
        <li>Number</li>
        <li>String</li>
        <li>Null</li>
        <li>undefined</li>
        <li>Boolean</li>
    </ul>
</body>
    <script>
        var a = 1;
        console.log(typeof a);      //打印出来是Number类型
        console.log(typeof typeof a);   //打印出来是String类型
        var b = "string";
        console.log(typeof b);       //打印出来是string类型
        // null类型只有null一个值
        var c = null;
        console.log(typeof c);       //打印出来是object类型(无法修复的bug)
        console.log(typeof typeof c);       //打印出来是string类型
        // undefined类型只有undefined一个值
        var d = undefined;
        console.log(typeof d);             //打印出来是undefined类型
        console.log(typeof typeof d);             //打印出来是string类型
        // boolean类型只有两个值:true/false
        var e = true;
        console.log(typeof e);              //打印出来是boolean类型
        console.log(typeof typeof e);              //打印出来是string类型

    </script>
</html>

堆栈

基本数据类型占用空间小,它们的值保存在栈中,按值来访问。
引用数据类型占用空间大,栈内存中存放地址指向堆内存中的空间,按引用来访问。


JavaScript语法--运算符

按操作数的个数:
-一元运算符(一个操作数,如:+a,-b)
-二元运算符(两个操作数,如:a+b)
-三元运算符(三个操作数,如:条件?值1:值2)
--
按功能:
-算术运算符:+ - * / %(取余) ++(自加) --(自减)
-赋值运算符:= += -= *= /= %=
-字符串操作:+(拼接)
-比较运算符:> < == === != !== >= <=
-逻辑运算符:&& || !
-条件运算符:x<10? "x比10小":"x比10大"

算术运算符

--
以+为例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>count demo</title>
</head>
<body>
    <p>i=10,j=10,i+j=?</p>
    <p id="count"></p>
    <button onclick="add()">结果</button>
</body>
  <script>
        function add() {
            var i = 10;
            var j = 10;
            var m = i + j;
            //获取p元素的id,然后对p元素进行插入内容innerHTML操作,将m的值赋给p元素,作为p元素的内容
            document.getElementById("count").innerHTML = m;
        }
    </script>
</html>

--
以--(自减)为例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>自减 demo</title>
</head>
<body>
    <p>i=5,i--?</p>
    <p id="subtract"></p>
    <p>i=5,--i?</p>
    <p id="subtractI"></p>
    <button onclick="subtract()">结果</button>
</body>
   <script>
        function subtract(){
            var i = 5;
            // i--先将i的值赋给j再自减,而--i是先自减再将值赋给j
            var j = i--;
            var m = --i
            // 现在j的值为5,然后i自减,自减后的值为4
            document.getElementById("subtract").innerHTML = j;
            // 现在i的值为4,先自减,自减后的值为3,将3赋给m
            document.getElementById("subtractI").innerHTML = m;
        }
    </script>
</html>

--
++(自加)的一些例子:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script type="text/javascript">
            /*
             * 自增 ++
             *   - 通过自增可以使变量在自身的基础上增加1
             *   - 对于一个变量自增以后,原变量的值会立即自增1
             *   - 自增分成两种:后++(a++) 和 前++(++a)   
             *      无论是a++ 还是 ++a,都会立即使原变量的值自增1
             *          不同的是a++ 和 ++a的值不同
             *      a++的值等于原变量的值(自增前的值)
             *      ++a的值等于新值 (自增后的值)
             * 
             * 自减 --
             *  - 通过自减可以使变量在自身的基础上减1
             *  - 自减分成两种:后--(a--) 和 前--(--a)
             *      无论是a-- 还是 --a 都会立即使原变量的值自减1
             *          不同的是a-- 和 --a的值不同
             *              a-- 是变量的原值 (自减前的值)
             *              --a 是变量的新值 (自减以后的值)     
             */

            var a = 1;
            var num ;
            /*num = ++a;
            num = a++;
            console.log(a);*/

            /*num = a++ + 1;
            num = a++ +1;
            console.log(a);
            console.log(num);*/

            /*num = ++a + a;
            console.log(a);
            console.log(num);*/

            /*num =a++ + a + a;
            console.log(a);
            console.log(num);*/

            /*num = ++a +a +a;
            console.log(a);
            console.log(num);*/

            /*num = a++ + ++a ;
            console.log(a);
            console.log(num);*/

            /*num = a++ + a++ ;
            console.log(a);
            console.log(num);*/

            /*num = a++ + a++ + a;
            console.log(a);
            console.log(num);*/

            /*num = a++ + a++ + a + ++a;
            console.log(a);
            console.log(num);*/
        </script>
    </head>
    <body>
    </body>
</html>

+(字符串运算符)

+拼接符号两边的字符串

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>字符串拼接</title>
</head>
<body>
    
</body>
<script>
    var a = "hello";
    var b = 2;
    alert(a+b);      //做字符串拼接运算时,将数字2转换为字符2,再进行字符串拼接操作
</script>
</html>

逻辑运算符

&&(逻辑与)、||(逻辑或)、!(逻辑非)
逻辑运算返回Boolean值。

<script>
        //逻辑与
       var result = 2>1 && 3<1;
       console.log(result);
       //逻辑或
       var result2 = 2>1 || 3<1;
       console.log(result2);
       //逻辑非
       var result3 = !(3>2);
       console.log(result3);
    </script>

赋值运算符

复合赋值操作符
加法赋值 x += y <==> x = x + y
减法赋值 x -= y <==> x = x - y
乘法赋值 x *= y <==> x = x * y
除法赋值 x /= y <==> x = x / y
求余赋值 x %= y <==> x = x % y

--
以%=为例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>赋值运算符</title>
</head>
<body> 
</body>
<script>
    var x = 1;
    var y = 2;
    // x = x % y   取余
    console.log(x%=y);
</script>
</html>
比较运算符

大于号 >= 大于等于 < 小于号 <= 小于等于
== === != !==

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>比较运算符</title>
</head>
<body>
</body>
<script>
    var a = 1;
    var b = "1";
    alert(a==b);        //返回值为true
    alert(a===b);       //返回值为false(===:必须值和数据类型相同)
</script>
</html>

位操作符

在计算机中数值都以二进制补码形式存储和运算。
无符号数的取值范围:0~255.
有符号数的取值范围:-128~127.
所有的按位操作符的操作数都会被转成补码形式的有符号32位整数。


image.png

--按位异或
同为0,异为1

1.将-3转换为32位二进制数
-3的原码
-3 = 1000 0000 0000 0000 0000 0000 0000 0011(负号转为1,正号为0)
-3的反码(符号位不变,按位取反)
     1111 1111 1111 1111 1111 1111 1111 1100
-3的补码(末尾+1)
     1111 1111 1111 1111 1111 1111 1111 1101
将8转换为32位二进制数(正数的原码、反码、补码相同)
8 =  0000 0000 0000 0000 0000 0000 0000 1000
2.按相同为0,不同为1的规则进行运算(符号位也要参与运算)
     1111 1111 1111 1111 1111 1111 1111 0101(补码)
3.将上述结果转为原码(补码转原码)
     先-1
     1111 1111 1111 1111 1111 1111 1111 0100
     取反(符号位不变,按位取反)
     1000 0000 0000 0000 0000 0000 0000 1011
     最终为-11

条件运算符

条件表达式?语句1:语句2
1.首先执行条件表达式
2.返回值为true则执行语句1,否则,执行语句2.

<script>
   var a = 2>3?"2>3":"2<3";
    console.log(a)
</script>

运算符的优先级

MDN运算符优先级表

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table
上一篇下一篇

猜你喜欢

热点阅读