JavaScript基础(一)

文章目录

简介

一、JS概念

JS引入方式:

JS中的变量声明:

JS中基本数据类型:

JS中特殊的数据类型:

JS中运算符:

二、语句

1. 条件语句

2. 分支语句(选择语句)

3. 循环语句​​​​​​​

 三、函数

1.定义函数方式(三种)

2.js中的函数参数传递:

四、JS中对象

        1.Date对象(日期对象)

        2.Math对象(数学对象)

        3.String对象

        4.Global对象

        5.数组对象 Array

            数组4种声明方式----数组中可以放不同类型的对象:

            数组的使用:

        数组的扩容:

        数组的遍历:

        数组常用方法:

        6.Even对象(事件)

               a、什么是事件?

                b、常用的事件

                        1.单击事件

                        2.双击事件

                        3.鼠标事件

                        4.键盘事件

                        5.焦点事件

                        6.完成页面加载事件​​​​​​​


简介

JS基础概念,JS语句,JS函数,JS对象(Date,Math,String,Global,Array,Even事件)


一、JS概念

作用:JS可以实现表单数据的校验;TAB菜单的切换;背景图的切换;JS小游戏的开发;(HTML+CSS可以有静态的页面)。

概念:是一种直接使用的语言(不需要编译器去转换),动态类型,弱类型、基于原型的语言,内置支持类型。

组成:ECMAScript(变量、类型、语法等),DOM(文档对象模型,HTML和XML的应用程序接口,DOM把整个页面规划成由节点层级构成的文档),BOM(浏览器对象模型,对浏览器窗口进行访问和操作)。

特点:1. 脚本语言,不需要进行事先编译,只要有一个相适应的解释器就行,解释器会把程序代码翻译成可执行的格式。

          2.基于对象的语言,具有封装特性,没有继承和多态的概念。

          3.事件驱动,在网页执行某种操作,别成为事件(event)。如按下鼠标,移动窗口等,当事件发生后会引起相应的事件响应。

          4.简单性,变量时弱类型,var a,b; a=123,b=1,a=b;

          5.安全性,不能访问本地硬盘,不能将数据存入服务器上,只能同故宫浏览器实现信息浏览或动态交互。

          6.跨平台性,依赖于浏览器本身;

        缺点:各种浏览支持的程度不一样,呈现效果会不一样。

JS引入方式:

JS中的变量声明:

        var 变量名 = 值;

注意事项:js中的变量名称:数字,字母,下划线组成,数字不能开头;

                  js中的变量名可以重复,但后者会把前面的变量赋值覆盖;

                  js中末尾没有;可以,但是不推荐使用。

JS中基本数据类型:

       typeof 变量,显示变量的类型。 

        数字类型:number

        字符串类型:string

        布尔类型:boolean

        对象类型:object

JS中特殊的数据类型:

        未定义数据类型:underfind,只声明了变量,没有赋值。

        不是一个数字类型:NaN(not a number);a=‘123’ a=Number(a) 输出是123,但是类型是NaN。

        空对象:object;var a = null 

JS中运算符:

        算数运算符:+、-、*、/、%、++、--

        运算符:&、|、!(非)、&&(与)、||(或)、^、<、>、<=、>=、!=

        连接符:+ 【两个值的类型一样时是加号,不同类型就是连接符】

        特殊运算符:

                ==(等值符):先比较类型,类型一致,在比较内容。不一致,会强制转换统一转number类型,在进行内容比较。

                ===(等同符):先比较类型,一致,在比较内容。不一致直接返回False。

注意逻辑符的运算方法:

只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;例子:1&&3 为3,1&&0为0。

只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。例子:3||1为3,3||0为3,0||3为3

上述图片来源于:表达式与运算符 - JavaScript | MDN

二、语句

1. 条件语句

        if(条件){ 语句体};

        if(条件){语句体1} else{语句体2}

        if(条件){语句体1} else if(条件2){语句体2}...else{语句体n}

2. 分支语句(选择语句)

        swich(条件){

                case value n:

                        break;

                default:

                        break

                }

3. 循环语句

while(条件){};

do{}while(条件);至少执行以西循环体(Java中一样,python中没有这个语句)

for(变量,条件,语句体){}【变量必须先初始化】

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS引入方式</title>
   <!-- 在html文件中通过标签的type属性引入 src属性:引入外部js文件 charset='编码格式' -->
    <script type="text/javascript">
        // alert("Hello World!")
        // alert('方式二')
        // var a = 10;
        // var b = 20.7;
        // var c = a + b;
        // alert(c);


        var d=15;
        switch(d){
            case 10:alert('d=10');
                break;
            case 15:alert('d=15');
                break;
            case 20:alert('d=20');
                break;
            default:
                break    
        }
    
        
        // for 循环 九九乘法表
        for(var i=1; i<=9;i++){
            for(var j=1;j<=i;j++){
                document.write(j+'*'+i+'='+i*j+'&nbsp;&nbsp')
            }
            document.write('<br/>')
        }
    </script>
    <!-- <script type="text/javascript" src="./01.js" charset="utf-8"></script> -->
</head>
<body>
</body>
</html>

 三、函数

1.定义函数方式(三种)

        founction 函数名(){ 函数体};

        var 变量名=function () {函数体};

        var 变量名=new Function("函数体") ;【函数本身也是一个对象】

调用:函数名/变量名 ()

2.js中的函数参数传递:

        实参个数可以和形参个数可以不一致。

        参数类似位置参数,当函数中有两位参数,

        传入的只有一个参数时,另一个会显示undefinde,不会报错,

        当传入的超过两位参数时,取前两个。

3.函数的返回值

        如果函数没有return 这时候返回undefined;

        ():函数执行符

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>02-函数</title>
    <script type="text/javascript">
        // 定义函数方式1:
        function demo1(){
            console.log('函数定义方式一');
        }
        // 定义函数方式2:
        var demo2=function(){
            console.log('函数定义方式二');
        }
        // 定义函数方式3:
        var demo3=new Function(console.log("函数定义方式三"));

        // 调用函数
        demo1();
        demo2();
        demo3();

        // 函数中参数传递
        function demo4(a,b,c){
            console.log(a,b,c)
        }
        demo4(11)       //11 undefined undefined
        demo4(1,2,3)    //1 2 3
        demo4(1,2,3,4)  //1 2 3

        //函数返回值
        function demo5(a){
            console.log('参数值'+a)
            return alert(a)
        }
        var a=10
        demo5(a) //参数值10  弹窗为10
        var a=function(){
            console.log('函数a');
        };

        demo5(a)

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

四、JS中对象

        1.Date对象(日期对象)

                本月的第几天:.getDate();

                本星期第几天:.getDay();

                返回月份 0-11:.getMonth();

                返回1900年至今的差值:.getYear();

                返回全年:.getFullYear();

                返回本地时间:.toLocaleString();

        2.Math对象(数学对象)

                向上、下取整:Math.ceil(变量名)、Math.floor(变量名);

                获得随机数:Math.random()        范围【0-1】;

        3.String对象

                2种声明方式:var 变量名=‘内容’;var 变量名=new String('内容');

                获得下标位置内容:.charAt(下标位置);

                获得字符串的第一个索引编号:.indexOf('字符串');

                分割字符串/截取方法:.split('-| |,');【根据字符串选择合适的方法分割】

                截取字符串:.substr(开始下标,截取长度);

                截取字符串:.substr(开始下标位置);【开始位置到结尾】

                截取字符串:.substring(开始下标,结束下标);

        4.Global对象

        Js中全局可以是使用的函数【自己的理解:类似python中的内置函数】

               把字符串转化为可执行的js代码:eval(变量);

                将对象转换为数字类型:Number(变量);

                把对象转换为字符串类型:String(变量);

                判断变量是否是数字类型:isNaN(变量);【NaN不是一个数字类】

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>03-对象</title>
    <script type="text/javascript">
// ---------------日期对象 Date---------------
        function testDate(){
            var data=new Date();
            // 本月的第几天
            document.write(data.getDate()+"<br />")
            // 本星期的第几天
            document.write(data.getDay()+'<br />')
            // 返回月份 0-11
            document.write(data.getMonth()+'<br />')
            // 从1900年至今的差值
            document.write(data.getYear()+'<br />')
            // 返回全年
            document.write(data.getFullYear()+'<br />')
            // 返回本地时间
            document.write(data.toLocaleTimeString()+'<br />')
        }
        testDate();

// ---------------数学对象 Math---------------
        function testMath(){
            // 获取随机数 [0, 1)
            var ran = Math.random()
            console.log(ran)
            // 随机数范围0-1
            var ran02 = Math.random()*1000;
            console.log(ran02)
            // 向上取整
            console.log(Math.ceil(ran02))
            // 向下取整
            console.log(Math.floor(ran02))
            // 获得4位随机数 ---用途:验证码
            console.log(Math.floor(Math.random()*9000+1000))
        }
        testMath();

// ---------------Sting对象----------------
        function testString(){
            // 字符串声明两种方式
            var a = 'bu_ding_123';
            var b = new String('bu_ding_123');
            // 获得下标位置为3的内容
            document.write('下标位置为3:'+a.charAt(3)+'<br />');
            // 获得字符串下标的索引
            document.write('下标索引:'+a.indexOf('ding')+'<br />');
            // 字符串截取 开始下标 截取长度
            document.write('开始下标2,截取长度5:'+a.substr(2,5)+'<br />');
            // 截取开始长度
            document.write('开始长度4:'+a.substr(4)+'<br />');
            // 字符串截取 开始下标 结束下标
            document.write('开始3,结束下标6:'+a.substring(3,10)+'<br />');
            // 开始下标
            document.write('开始下标:'+a.substr(3)+'<br />');
            // 字符串截取的方法
            document.write(a.split('_')+'<br />');
        }
        testString()

// ---------------Global对象----------------
        function testGlobal(){
            var a=1;
            var b='var c=1';
            document.write(a+'<br />');
            document.write(b+'<br />');
            // 把字符串转为可执行的js代码  c=1可执行
            eval(b);
            document.write(c+'<br />');  
            var d='123';
            var e='123aa';
            // 把对象转化为数字类型
            d=Number(d);
            e=Number(e);
            //检查某个值是否是数字      NaN不是一个数字类型
            console.log(typeof(d));
            document.write(isNaN(d)+'<br />');     //number false
            console.log(typeof(e));
            document.write(isNaN(e)+'<br />');     //number true
        }
        testGlobal()

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

        5.数组对象 Array

            数组4种声明方式----数组中可以放不同类型的对象:

                方式一:var 变量名=new Array() ;【声明一个空数组】

                方式二:var 变量名=new Array(数组长度);【声明一个有长度的数组】

                方式三:var 变量名=new Array('你好',123,new String(),true);

                方式四:var 变量名=['bu_ding',123,new Date(),false];【常用】

            数组的使用:

                先声明一个空数据,然后根据索引位置(下标)赋值内容;【js数组的下标可以不连续,没有值会默认为空empty】

        数组的扩容:

                直接使用.length函数,进行赋值,扩大或缩小长度;【扩大的位置没有数据默认为空;缩小的数组从前取值】

        数组的遍历:

                for(var i=初始值;i<数组名.length;i++){ console.log(arr[i]};i是从0开始的数字用来作为下标索引。

                for(var i in 数组名){ console.log(arr[i]};i代表数组的下标。

        数组常用方法:

                数组尾部添加元素(1个或多个):.push('元素n');

                删除并返回数组最后一个元素:.pop();

                删除并返回数组第一个元素:.shift();

                数组开头添加元素(1个或多个):.unshift();

                删除,添加的方法:.splice();【作为删除用是两个元素.splice(开始删除下标,删除个数);作为添加方法用时三个元素.splice(要添加元素的下标(剩下的元素下标向后排列),删除的个数(0是不删除元素),添加的元素内容)】

                

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>03-对象</title>
    <script type="text/javascript">
// ---------------数组对象 Array----------------
        function testArr1(){
            // 声明对象四种方式
            var arr1=new Array();
            var arr2=new Array(5);
            var arr3=new Array('bu_ding',123,new String(),true)
            var arr4=['bu','ding',123,new Date()]
            console.log(arr1)
            console.log(arr2)
            console.log(arr3)
            console.log(arr4)
        }
        function testArr2(){
            // 数组的使用
            var arr=[]
            arr[0]='bu_ding'
            arr[1]=123
            arr[2]=new Date().toLocaleTimeString()
            arr[5]='结束'
            arr[6]='撒花'
            console.log(arr) //bu_ding,123,17:12:12,,,结束,撒花
        }
        function testArr3(){
            // 数据扩容,扩大数组或者缩小数组
            var arr=['buding',123,new String(),false]
            console.log(arr.length);        //4
            // 扩大数组  扩充的部分没有值默认填为空
            arr.length=10;
            console.log(arr)            //(10) ['buding', 123, String, false, 空 ×6]
            // 缩小数组,去前两个
            arr.length=2 
            console.log(arr)            //(2) ['buding', 123]
        }
        function testArr4(){
            // 数组的遍历 两种方式
            arr=['bu',123,'你好',false]
            for(var i=0;i<arr.length;i++){   //i是从0开始的数字用来作为下标索引
                console.log(arr[i]) 
            }

            for(var j in arr){  //j代表数组的下标
                console.log(j)
                console.log(arr[j])  //数组内容
            }

            // #######################################################################
            // # python 对于数组循环做的比较:可以直接遍历数组,使用数组的长度作为下标
            // # a = [45,56,7,'3a',98]
            // # for j in a:
            // #     print(j)
            // # for i in range(len(a)):
            // #     print(a[i])
            // ########################################################################
        }
        function testArr5(){
            // 数组常用的方法
            var arr=[1,'bu',123,new Date()];
            console.log(arr);
            // 在尾部添加元素
            arr.push('ding','12')
            console.log(arr)
            //删除并返回最后一个数组元素
            var lastElement = arr.pop()
            console.log(lastElement)
            // 删除并返回第一个元素
            var firstElement = arr.shift()
            console.log(firstElement)
            // 数组开头添加元素
            arr.unshift('jia','you')
            console.log(arr)
            // splice()方法可以添加也可以删除  作为删除使用(有两个参数):开始删除的下标,删除的个数;
            arr.splice(4,1)
            console.log(arr)
            // 作为添加使用(有三个参数):要添加元素的下标(剩下的元素下标向后排列),删除的个数(0是不删除元素),添加的元素内容
            arr.splice(1,1,11)
            console.log(arr)
        }
        testArr1();
        testArr2();
        testArr3();
        testArr4();
        testArr5();
    </script>
</head>
<body>
</body>
</html>

        6.Even对象(事件)

               a、什么是事件?

                事件是可以被 JavaScript 监测到的行为。

                网页中的每个元素都可以产生某些事件。例如:用户按某个按钮时产生onclick事件触发某个函数;生活案例:烟雾报警器。        事件通常与JS函数配合使用,通过事件来驱动函数执行。

                b、常用的事件
                        1.单击事件

                        οnclick=‘函数名’【body 内的 标签中的属性】

                        2.双击事件

                        οndblclick=‘函数名’

                        3.鼠标事件

                        οnmοuseοver='函数名' :鼠标放上事件;

                        οnmοuseοut='函数名':鼠标离开事件;

                        οnmοusemοve='函数名':鼠标移动事件;

                        οnmοusedοwn='函数名':鼠标点击事件;

                        4.键盘事件

                        οnkeyup=‘函数名’:键盘弹起事件;

                        οnkeydοwn='函数名':键盘按下事件;

                        5.焦点事件

                        οnfοcus='函数名':获得焦点事件;

                        οnblur=‘函数名’:失去焦点事件;

                        οnchange=‘函数名’:内容改变事件;【必须失去焦点才会触发,内容没有改变失去焦点也不会触发】。

                        6.完成页面加载事件

                        οnlοad=‘函数名’【是body标签属性,加载完最后</html>标签会触发这个事件】

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>04-常用even事件</title>
    <script >
        function demo1(){
            alert('单击事件')
        }
        function demo2(){
            alert('双击事件')
        }
        function demo3(){
            alert('鼠标放上事件')
        }
        function demo4(){
            alert('鼠标点击事件')
        }
        function demo5(){
            alert('鼠标离开事件')
        }
        function demo6(){
            console.log('鼠标移动事件')
        }
        function demo7(){
            alert('键盘弹起事件')
        }
        function demo8(){
            alert('键盘按下事件')
        }
        function demo9(){
            alert('获得焦点事件')
        }
        function demo10(){
            alert('失去焦点事件')
        }
        function demo11(){
            alert('内容改变事件')
        }
        function demo12(){
            alert('页面完成加载')
        }
    </script>
</head>
<body onload="demo12()">
    <input type="button" value="单机操作" onclick="demo1()"><br />
    <input type="button" value="双击操作" ondblclick="demo2()"><br />
    <div style="width:50px; height:50px; background-color:blue;" onmouseover="demo3()" onmousedown='demo4()' onmouseout="demo5()" > </div>
    <div style="width:50px; height:50px; background-color:green;"  onmousemove="demo6()"> </div>
    <input type="text" name="" id="" onkeyup="demo7()"><br />
    <!-- <input type="text" onkeydown="demo8()" onfocus="demo9()" onblur="demo10()"><br /> -->
    <input type="text" value="123" onchange="demo11()"><br />
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值