JS -- 基础

作者: GHope | 来源:发表于2018-08-17 20:23 被阅读52次

    JS简介

    js 是 JavaScript 的缩写
    1、脚本语言、专门用来负责网页上的行为(可以直接写到网页中)

    2、在哪儿写js代码
    a.可以写在script标签中(理论上script标签可以放到HTML文件中的任何位置,
    实际开发中一般放在head或者body中)
    b.写到标签的事件属性中(列如:onclick)
    c.写到外部的js文件中

    3、js在网页中能做什么事情
    a.在网页的不同的位置插入html代码
    b.修改某个标签的内容
    c.修改某个标签的样式

    4、怎么写

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title></title>
            
            <!--导入外部的js文件-->
            <!--<script src="js/index.js">
                
            </script>-->
            <script src="js/数据类型.js" ></script>
            
            <!--一个html可以在多个位置插入script标签-->
            <script type="text/javascript">
                function insertP(){
                    document.write('<p>Python</p>')
                }
            </script>
        </head>
        <body>
            
            <h1 id="h">各类学科</h1>
            
            <button onclick="window.alert('按钮被点击')"></button>
            
            <button onclick="document.getElementById('h').style.color='red'">修改样式</button>
            
            <button onclick="document.getElementById('h').innerHTML='name'">修改内容</button>
            
            <!--往html中插入内容-->
            <script type="text/javascript">
                for (var i = 0; i < 7; i++) {
                    document.write("<p>殺</p>")
                }
            </script>
        </body>
    </html>
    
    js.gif

    基础语法

    1、js中的注释
    //这是单行注释
    /*
    这是多行注释
    */

    2、语句
    一条语句结束需要加分号(现在的js版本也可以不写)
    一行写多条语句必须使用分号隔开

    在控制台打印括号中的内容,功能和Python中的print差不多

    console.log('hello word')
    

    3、js没有缩进问题,用花括号表示一个代码块

    function print(){
        console.log('hello JS')
    }
    

    4、基本数据类型
    Number(数字)、String(字符串)、Boolean(布尔)、Array(数组)、Object(对象)、Function(函数)、null、undefined

    5、字面量
    数字字面量

    89(整数)
    66
    12.34(小数)
    3e8(科学计数)
    

    字符串字面量

    'asd'
    "asd"
    

    布尔字面量

    true
    false
    

    数字字面量

    [1,2,'asd',true]
    

    对象的字面量(对象的key值又是属性,不能加引号)

    var dict = {a:'asd'}
    

    6、标识符
    使用标识符来命名
    a.字母数字下划线$组成,不能以数字开头

    var huanhansan;
    

    b.不能是关键字
    c.大小写敏感
    d.规范:见名知义、

    声明变量

    在js中可以通过声明变量来保存数据
    语法
    var 变量名;
    var 变量名 = 初值;
    说明:var是关键字
    变量名:标识符,不能随意使用_或$开头(具有特殊含义);驼峰式命名(命名规则:第一个单词首字母小写,后面每个单词的首字母大写)。

    //声明变量
    var userName;
    //给变量赋值
    userName = 'GHope'
    console.log(userName)
    
    var score = 100
    console.log(score)
    
    //同时声明多个变量
    var name, age, sex;
    
    //一个变量可以存储任意类型的值,变量的默认值是undefined
    var a = 'abc'
    a = 100
    

    介于C与Python之间,类似于C的地方在于关键字的必须使用,类似于Python的地方在于同为动态语言(声明变量的时候不需要指定变量的数据类型)。

    运算符

    1、数学运算符:+,-,*,/,%,++,--

    a.-,+,*,%和数学中的求和、求差以及求乘积、取余是一样的

    var a = 10+20
    var b = 20-10
    var c = 10*20
    var d = 7%2
    

    b./和数学中的除一样

    var e = 5/2
    console.log(e)
    

    c.++,--(单目运算符)

    语法:变量++,变量--/++变量,--变量
    区别:在后面先赋值,再运算;在前面先运算,再赋值
    ++:自加一
    --:自减一

    var a1 = 10
    a1++
    console.log(a1)
    a1--
    console.log(a1)
    

    2、比较运算符:>,<,==(相等),!=,>=,<=,===(完全相等),!==,>==,<==

    结果都是布尔值

    console.log(10>20)
    console.log(10<20)
    
    //==:判断值是否相等
    console.log(5==5)
    console.log(5=='5')
    
    //===:判断值和类型是否相等
    console.log(5===5)
    console.log(5==='5')
    

    3.逻辑运算符(&&:与,||:或,!非)

    console.log('与:',true&&true,true&&false)
    

    4、赋值运算:=,+=,-=,*=,/=,%=

    赋值运算符的左边必须是变量

    var a = 100
    a += 10
    console.log(a)
    

    5、三目运算符(? :)

    基本格式:
    条件语句 ? 值1:值2
    结果:
    判断条件语句的结果是否是true,如果是true,那么表达式的结果是值1,否则为值2

    var b = 10 > 20 ? 10 : 20
    console.log(b)
    
    //求两个数的最大值
    var ca = 80
    var cb = 100
    console.log(ca>cb?ca:cb)
    

    6、运算符的优先级

    赋值运算符<逻辑运算符<比较运算符<算术运算符
    可以通过添加()改变


    控制台输出结果

    貌似是控制台输出结果不完全,只能输出第一个对象,所以之后的实例代码通过网页的查看中截图显示。例如:39行中输出超过一个,就只显示第一个,没有逻辑运算符的值。


    网页—查看—console

    分支结构

    js中的分支结构有两种:if语句,switch语句

    1.if语句

    a.if(条件语句){满足条件要执行的代码块}

    var age = 18
    if(age>=18){
        console.log('成年')
    }
    

    b.if(条件语句){代码块1}else{代码块2}

    if(age>=18){
        console.log('成年')
    }else{
        console.log('未成年')
    }
    

    c.if - else if - else(相当于python中elif)

    if(age<18){
        console.log('未成年')
    }else if(age<33){
        console.log('青年')
    }else{
        console.log('老年')
    }
    

    2、switch语句

     switch(变量){
        case 值:
            语句1;
            break;
        case 值:
            语句2;
            break;
         ...
        default:
            语句n;
            break;  
     }
    

    执行过程:使用变量的值依次和后边每个case后边的值进行判断,看是否相等(完全相等)。如果相等就执行那个case后面对应的语句。如果前面每个case后面的值都和变量的值不相等,就执行default后边的语句。

    var score = 5;
    switch (score){
        case 0:
            console.log('留级,扣1分')
            break;
        case 1:
            console.log('留级')
            break;
        case 2:
            console.log('升级')
            break;
        case 3:
            console.log('升级,加1分')
            break;
        case 4:
            console.log('升级,加2分')
            break;
        default:
            console.log('你可以提前毕业了!')
            break;
    }
    

    10分制:0-5:不及格,6-7:及格,8-9:良好,10:优秀

    score = 9
    switch(score){
        case 0:
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
            console.log('不及格');
            break;
        case 6:
        case 7:
            console.log('及格');
            break;
        case 8:
        case 9:
            console.log('良好');
            break;
        case 10:
            console.log('优秀');
            break;
    }
    

    switch出现的目的是在某些情况下简化if循环

    //0-6表示星期1到星期日
    var week = 0;
    switch (week){
        case 0:
            console.log('周一');
            break;
        case 1:
            console.log('周二');
            break;
        case 2:
            console.log('周三');
            break;
        case 3:
            console.log('周四');
            break;
        case 4:
            console.log('周五');
            break;
        case 5:
            console.log('周六');
            break;
        case 6:
            console.log('周日');
            break;
        default:
            console.log('非法值');
            break;
    }
    
    无错漏的控制台截图

    循环结构

    js的循环分为for循环和while循环

    1、for循环:

    a.for - in (和python中的for循环一样)
    for(变量 in 数组/对象){函数体}

    var arr = [1,2,3,'abc']
    //x取的是下标
    for(var x in arr){
        console.log(arr[x])
    }
    
    var obj = {name:'GHope',age:18}
    //key取的相当于python中字典的键or属性名
    for(var key in obj){
        console.log(key,obj[key])
    }
    

    b.for(变量;判断;操作(多为自加或自减)){循环体}
    执行顺序:先声明变量,然后进行判断,如果结果为真,则执行循环体,后进行操作,操作结束后继续判断,直到判断结果为假,结束循环.上述fori为我自己了解的,只适用于大多数情况,以下为通用版----
    for(表达式1;表达式2;表达式3){循环体}
    执行过程:先执行表达式1,然后再判断表达式2的结果是否是true,如果是true就执行循环体;执行完循环体,再执行表达式3;执行完表达式3,再判断表达式2的结果是否是true,如果是true又执行循环体;执行完循环体,再执行表达式3;依次类推,直到表达式2的结果是false,循环就结束

    var sum = 0
    for (var i = 1; i < 101; i++) {
        sum += i
    }
    console.log(sum)
    

    2.while循环

    a.while(条件语句){循环体}

    var sum1 = 0,i = 1
    while(i<=100){
        sum1 += i;
        i++;
    }
    console.log(sum1)
    

    b.do - while循环:do{循环体}while(条件语句);
    执行过程,先执行循环体,然后判断条件是否成立。如果成立再执行循环体。。
    。依次类推,直到条件不成立,循环结束

    var sum2 = 0
    var i = 1
    do{
        sum2 += i;
        i++;
    }while(i<=100)
    console.log(sum2)
    

    3、break和continue
    break结束当前循环
    continue结束当次循环

    函数

    1、函数的声明

    function 函数名(参数列表){函数体}
    a.function - 关键字
    b.函数名 - 驼峰式命名;见名知义
    c.参数:参数可以有默认值,但有默认值的参数要写在后边。因为js中的函数只能根据位置传参。要保证每个参数都有值才能有效调用该函数。
    d.函数体:实现函数的功能。只有在调用的时候才执行

    function func1(num1,num2){
        console.log('求两个数的和')
        return num1+num2
    }
    console.log(func1(10,20))
    

    函数没有return的时候,函数的返回值是undefined

    function func2(){
        console.log('iamfunnction')
    }
    console.log(func2())
    

    2.函数的调用
    函数名(实参列表)

    3、作用域
    全局变量:声明在函数外面的变量(从变量声明到文件结束)
    局部变量:声明在函数里面的变量(从函数声明到函数结束;函数参数)

    //全局变量
    var aa = 10
    
    function func3(){
        //局部变量
        var bb = 100
        console.log(bb)
        
        //函数中可以修改全局变量的值
        aa = 200
        
        //函数中可以声明函数
        function func31(){
            bb = 1
            console.log(bb)
        }
        func31()
    }
    
    func3()
    //func31()   Uncaught ReferenceError: func31 is not defined 函数中的函数只能在函数中调用
    console.log(aa)
    //console.log(bb)  Uncaught ReferenceError: bb is not defined
    
    //可以将函数作为变量
    var a = func2
    a()
    
    //不支持不定参数
    

    数据类型

    基本分类:数字、字符串、布尔、列表、对象

    1、数字:整数 or 小数

    var num1 = 10
    var num2 = new Number()
    console.log(num2)
    

    2、字符串

    a.''或""括起来的字符集
    b.转义字符
    c.字符编码是unicode编码

    var str1 = 'abc'
    var str2 = "abc"
    var str3 = '\n'
    

    d.获取字符串长度:字符串.length

    console.log(str1.length)
    

    e.获取单个字符:字符串[下标]
    下标:1、范围是0~长度-1;2、如果越界,不报错,但返回的结果是未定义
    js中的字符串不能切片

    console.log(str1[10])
    

    f、运算符
    js中字符串只支持+,不支持*
    字符串1+字符串2 -- 拼接两个字符串
    js中字符串可以和其它任何数据进行加操作,其效果都是字符串连接(会将其它数据转换成字符串)

    console.log('123'+'abc')
    //字符串相关方法(查)
    var str = 'abc123'
    var re = str.search(/\d{3}/i)
    console.log(re)
    

    3、对象,构造方法(类)

    var obj1 = {name:'GHope',age:18}
    console.log(obj1.name,obj1['name'])
    
    //声明构造方法
    function Person(){
        this.name = 'Luners'
        this.age = 18
        this.sex = '男'
    }
    var p1 = new Person()
    console.log(p1,typeof(p1))
    

    相关文章

      网友评论

        本文标题:JS -- 基础

        本文链接:https://www.haomeiwen.com/subject/ekxabftx.html