JavaScript基础

今日内容:

1.数据库范式;

2.事务;

3.JavaScript基础。

数据库范式:

​ 1.第一范式:每一列都是不可分割的原子数据项(每一个列都只包含唯一意义,例如:如果一个列叫做人员信息【其中包含了年龄,姓名等多个信息】,则不符合1NF,应该拆分。)

​ 2.第二范式:在1NF的基础上,非码属性必须完全依赖于候选码。

​ 3.第三范式:在2NF的基础上,任何非主属性不依赖于其它非主属性。

事务:

概念:

​ 如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。

操作:

手动提交:

​ 1.开启事务:start transaction;

​ 2.需要事务管理的各种SQL任务;

​ 3.回滚:rollback;

​ 4.提交:commit;

事务四大特征:

​ 1.原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败;

​ 2.持久性:当事务提交或回滚后,数据库会永久保存数据;

​ 3.隔离性:多个事务之间,相互独立;

​ 4.一致性:事务操作前后,数据总量不变。

事务的隔离级别:

​ **概念:**多个事务之间是相互独立的,但是如果多个事务操作同一批数据,则会引发一些问题,设置不懂的隔离级别就可以解决这些问题。

存在问题:

​ 1.脏读:一个事务,读取到另一个事务中没有提交的数据;

​ 2.不可重复读(虚读):在同一个事务中,两次读到的数据不一致;

​ 3.幻读:一个事务操作数据表中所有记录,另一个事务添加了一条记录,则第一个事务查询不到自己的修改。

隔离级别:

​ 1.read uncommitted:读未提交

​ * 产生的问题:脏读,虚读,幻读

​ 2.read committed:读已提交(oracle默认)

​ * 产生的问题:虚读

​ 3.repeatable read:可重复读(Mysql默认)

​ * 产生的问题:幻读

​ 4.serializable:串行化

​ * 可解决所有问题

​ 注意:隔离级别从上到下,从小到大,安全性越来越高,效率越来越低。

JavaScript基础

概念:一门客户端编程语言

​ 运行在客户端浏览器中的,每一个浏览器都有JavaScript的解析引擎。

​ 脚本语言:不需要编译,直接就可以被浏览器解析执行。

功能:

​ 可以来增强用户和html页面的交互过程,可以来控制html元素,让页面有一些动态效果,增强用户体验。

ECMAScript:客户端脚本语言的标准
1.基本语法:
  • 与html结合方式:

    • 内部JS
      • 定义<script>,标签体内容就是js代码
    • 外部JS
      • 定义<script>,通过src属性引入外部的js文件
    • 注意:
      • <script>标签可以定义在html页面的如何地方。但是定义的位置会影响执行顺序。
      • <script>标签可以定义多个。
  • 注释:

    • 单行注释://注释内容
    • 多行注释:/*注释内容*/
  • 数据类型:

    • 原始数据类型(基本数据类型):
      • number:数字。整数、小数和NaN(not a number 一个不是数字的数字类型)
      • string:字符串。
      • boolean:true和false。
      • null:对象为空的占位符。
      • undefined:未定义。如果一个变量没有给初始化值,则会被默认赋值为undefine
    • 引用数据类型:对象
  • 变量:

    • 变量:一小块存储数据的内存空间
    • java是强类型的编程语言,js是弱类型的语言。
    • 语法:
      • var 变量名 = 初始化值;(如果不使用var修饰的变量则为全局变量)
      • 可以使用:typeof(变量名)来得到该变量的数据类型。
  • 运算符:

    • 一元运算符:见Java。++,–,+(正号)…
      • 注意:在js中,如果运算数不是运算符所要求的的类型,那么js引擎会实现自动转换。
        • string转number:按照字面值转换,如果字面值不是数字,则转为NaN。
        • boolean转number:true转为1,false转为0。
        • number转boolean:0或NaN为假,其他为真。
        • string转boolean:除了空字符串(“”),其他都是true。
        • null和undefined:都是false。
        • 对象:所有对象都是true。
    • 算数运算符:见java。+,-,*,/,%…
    • 赋值运算符:见java。
    • 比较运算符:
      • 类型相同比较
        • 字符串:按字典顺序比较,按位逐一比较,直到得到大小为止。
      • 类型不同比较
        • 先进行类型转换,再比较。
      • ===:全等于,不进行类型转换,如果类型不同,则认为不相等。
    • 逻辑运算符:见java。
    • 三元运算符:见java。
  • ​ **流程控制语句:**见java,仅仅说明特殊的内容。

    • switch:js可以接受任意类型。
2.基本对象

Function:函数对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Function对象</title>

    <script>
        /**
         * Function:函数(方法)对象
         * 创建:
         * 方法
         * 属性
         *      1.length:代表形参的个数
         * 特点
         *      1.方法定义时,形参的类型可以不写
         *      2.方法是一个对象,如果定义了名称相同的方法,会覆盖前者
         *      3.在js中,方法的调用只与方法名称有关,和参数列表无关
         *      4.在方法声明中有一个隐藏的内置对象arguments数组,封装了所有的参数(在可变参数情景下可用)
         * 调用
         */

        // //1.创建方式1
        // var fun1 = new Function("a","b","alert(a);")
        // //调用方法
        // //fun1(3,4)

        //2.创建方式2
        function fun2(a, b) {
            alert(a + b)
        }

        //fun2(3,4)

        //3.创建方式3
        var fun3 = function (a, b) {
            alert(a * b)
        }
        fun3(3, 4)
        //传入的参数个数可以和定义的形参个数不同,若少了,则剩下的变量为undefind,若多了,则会被忽略掉多余部分
        fun3(1)
        fun3(1, 3, 4)

        //使用arguments对象实现可变参数
        //多数累加
        function fun4() {
            var sum = 0
            alert("开始累加")
            for (var i = 0; i < arguments.length; i++) {
                sum += arguments[i]
            }
            alert(sum)
        }
        fun4(1,4,3)
        
    </script>
</head>
<body>
</body>
</html>

Array:数组对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Array对象</title>

    <script>
        /**
         * Array:数组对象
         * 1.创建:
         *      1.var arr = new Array(元素列表);
         *      2.var arr = new Array(默认长度);
         *      3.var arr = [元素列表];
         * 2.方法
         *      1.join(参数):将数组中的元素按照参数指定的分隔符拼接为字符串
         *      2.push(元素):向数组末尾添加一个或多个元素
         * 3.属性
         * 4.特点
         *      1.js中,数组的元素类型是可变的
         *      2.js中,数组的长度是可变的
         *
         */

        //创建方式:
        var arr1 = new Array(1, 2, 3)
        var arr2 = new Array(5)
        var arr3 = [1,2,3,4,5]
        var arr4 = new Array()

        document.write(arr1+"<br>")
        document.write(arr2+"<br>")
        document.write(arr3+"<br>")
        document.write(arr4+"<br>")

        var arr5 = [1,"abc",true]
        document.write(arr5+"<br>")
        document.write(arr5[10]+"<br>")
        arr5[10] = "hehe"
        document.write(arr5+"<br>")

    </script>
</head>
<body>
</body>
</html>

Boolean:类似于boolean包装类。
Date:时间对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Date对象</title>

    <script>
        /**
         * Date:日期对象
         *  1.创建:
         *      var date = new Date();
         *  2.方法:
         *      toLocaleString():根据本地时间格式,把 Date 对象转换为字符串。
         *      getTime():返回 1970 年 1 月 1 日至今的毫秒数,时间戳
         */

        var date = new Date()
        document.write(date.toLocaleString())

    </script>
</head>
<body>
</body>
</html>

Math:数学对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Math对象</title>

    <script>
        /**
         * Math:日期对象
         *  1.创建:
         *      *特点:Math对象不用创建,直接使用
         *  2.方法:
         *      random():返回0~1之间的随机数,含0不含1
         *  3.属性:
         *      PI
         *
         */

        document.write(Math.PI)

    </script>
</head>
<body>
</body>
</html>

Number:类似于基本类型的包装类。
String:类似于基本类型的包装类。
RegExp:正则表达式对象

​ 1.正则表达式:定义字符串的组成规则。

​ (1).单个字符:[]

​ 如:[a] [ab] [a-zA-Z0-9]

​ 特殊符号代表特殊含义的单个字符:

​ \d:单个数字字符 [0-9]

​ \w:单个单词字符[a-zA-Z0-9]

​ (2).量词符号:

​ ?:表示出现0次或1次

​ *:表示出现0次或多次

​ +:表示出现1次或多次

​ {m,n}:表示m <= 数量 <= n

​ {,n}:表示最多n次

​ {m,}:表示最少m次

​ (3).开始结束符号

​ ^开始符号

​ $结束符号

​ 2.正则对象:

​ (1).创建

​ var reg = new RegExp(“正则表达式”);

​ var reg = /正则表达式/;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>RegExp对象</title>

    <script>
        /**
         * RegExp:正则对象
         *  1.创建:
         *      var reg = new RegExp("正则表达式");
         *      var reg = /正则表达式/;
         *  2.方法:
         *      test(参数):验证指定的字符串是否符合正则定义的规范
         *
         */

        var reg = new RegExp("\\w{6,12}")
        var reg2 = /^\w{6,12}$/

        //验证
        var username = "zhangsandafadfadf"
        var flag = reg2.test(username)
        alert(flag)

    </script>
</head>
<body>
</body>
</html>

Global:全局对象

​ 1.特点:全局对象,这个Global中封装的方法不需要对象就可以直接调用。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Global对象</title>

    <script>
        /**
         * Global:全局对象
         *  1.方法:
         *      encodeURI()    把字符串编码为 URI。
         *      encodeURIComponent()    把字符串编码为 URI 组件,区别在于编码的字符更多。
         *      decodeURI()    解码某个编码的 URI。
         *      decodeURIComponent()    解码一个编码的 URI 组件。
         *
         *      parseInt():将字符串转为数字
         *              逐一判断每一个字符是否是数字,直到不是数字为止,将前边的数字部分转为nubmer
         *
         *      eval():将字符串转为脚本执行
         */

        var str = "世科网络"
        var encod = encodeURI(str)
        document.write(encod+"<br>")
        var dencod = decodeURI(encod)
        document.write(dencod+"<br>")

        var str = "123abc"
        document.write(parseInt(str))

        var str = "alert(123)"
        eval(str)

    </script>
</head>
<body>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值