2018-11-05 Day05 js基础语法

00-什么是js

<!-- 
    1.什么是js
        js是javascript的缩写,是一门专门用来处理网页中的行为的脚本语言,也是web标准中的行为标准
        javascript和java没有关系
    
    2.常用事件
    onclick -- window.alert(内容) 在网页内弹出一个对话框
        
    3.在什么地方写js代码(针对网页来说)
        内联js:写在标签事件相关的属性中,例如onclick属性,属性值是js代码
        内部的js:写在script标签的内容中,script标签理论上是可以放在html文件的任意位置,但一般放在head或者body中
        外部的js:写在一个外部的一个js文件中(后缀是.js的文件),然后通过script的src属性来导入
    
    4.js能做什么事情
        a.js可以修改标签中的内容
        b.修改标签的样式
        c.插入html代码(写哪儿就在哪儿插入)
-->


<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <!-- 内部的js -->
        <!-- <script type="text/javascript"> -->
            <!-- window.alert('script标签中的js') -->
        <!-- </script> -->
        <!-- 外部js
        <!-- <script type="text/javascript" src="index.js"></script> -->
    </head>
    <body>
        <!-- 内联js -->
        <!-- <button type="button" onclick="window.alert('按钮被点了!')">点我啊</button> -->
        
        <!-- 修改内容 -->
        <p id="p1">puthon基础</p>
        <button onclick="document.getElementById('p1').innerHTML = 'js基础'">修改内容</button>
    
        <!-- 修改样式 -->
        <button type="button" onclick="document.getElementById('p1').style.color = 'red'">修改样式</button>
    
        <!-- 插入html代码 -->
        
        <script type="text/javascript">
            document.write('<p>插入的段落</p>')  
        </script>
    </body>
</html>

01-js基础语法


<script type="text/javascript">
    // 1.注释
            //当行注释
                
            /*
            多行注释
            多行注释
            */
        
    //2.标识符
        /*标识符是用来命名的,js中的标识符要求
        是由字母、数字、下划线、$组成,数字不能开头
        */
       //js中大小写敏感
    //3.常用的数据类型
        //a.数字类型(Number)、布尔(Boolean)、字符串(String)、数组(Array) 
        // 对象(Object)、函数(Function)等
        
        //数字类型(Number):包含所有的数字(整数和小数、科学计数),不支持虚数
        //布尔(Boolean):treu或者false
        //字符串(String):支持双引号和双引号
        //数组(Array):相当于python中的列表
        //对象(Object):python中对象和字典的结合
        //函数(Function):相当于python中的函数
        
        //b.typeof(数据) - 获取数据类型
        
        //c.new 类型名(数据) - 将数据转换为指定的类型
        
        //d.常用的特殊值:undefined(相当于python中的None), null(一般用来清空)
        
    //4.格式:js没有缩进的要求
</script>




<script type="text/javascript">
        
    var abc = 100
    console.log(abc)
    var p1 = {
        name:"余婷",
        age:18,
        sex:"女",
        }
    function func_name(){
        console.log('函数体')
    }
    
    func_name()
    
    console.log(typeof(100))
    console.log(func_name)
    var a = new Boolean(44)
    console.log(a)
</script>


<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title></title>
    </head>
    <body>
        
    </body>
</html>

02-变量

<script type="text/javascript">
    
    /*
    语法(最好用var声明):
        a.var 变量名
        b.变量名 = 值
    说明:
        var - js关键字,声明变量的时候写,用var声明变量的时候可以不给变量赋值,这时候默认值是undifind
              省略的时候变量名后必须赋值 
        变量名 - 是标识符,不能是关键字,驼峰式命名规范,变量可以赋任何其他类型的值
    
    */
   
   
   
   //声明一个变量
    name1 = 'abc'
    console.log(name1)
    
    var name2 = '小红'
    console.log(name2)
    
    //同时声明多个变量
    //不用var,必须每个赋值
        age = 18, name = '小红'
        console.log(age, name)
    //用var
        var age = 10, sex, name = '小明'
        console.log(age, sex, name)
    
    //注意:不支持这种写法
    //x, y = 1, 2
</script>



03-js运算符

<script type="text/javascript">
    //js中支持:数学运算符,比较运算符,逻辑运算符,赋值运算符,位运算符
    
    //1.数学运算符:+  -  *  /  %  **(js7)  ++(自加1)  --(自减1)
    console.log(10+20, 20-10, 20*10, 20/10, 20%10, 5**2)
      //变量++, ++变量, 变量--, --变量(注意:变量必须要有值)
    
    //2.比较运算符:>  <  ==  !=  >=  <=  ===  !==
    //  返回值都是布尔值
    //  ==(相等) - 判断值是否相等  
    //  ===(完全相等) - 判断值和类型是否相等  
    
    //3.逻辑运算符:&&(与)  ||(或)  !(非)
    //  运算规则和python中的and or not一模一样
    
    //4.赋值运算符:=. +=, -=, *=, /=, %=, **=
    //  和python一样
    
    //5.位运算符:&  |  ^  ~  >>  <<
    //  和python一样
    
    //6.符合运算:数学>比较>逻辑>赋值
    //  通过加括号来改变运算顺序
    
    
    //++  -- 运用
        var number = 25
        number++
        console.log(number)
        ++number
        console.log(number)
        number--
        console.log(number)
        
        var number1 = 1, number2
        number2 = number1++  //相当于:number2=number1;number1++
        console.log(number1, number2) // 2, 1
        
        var number11 = 1, number22
        number22 = ++number11  //相当于:;number11++;number22=number11
        console.log(number11, number22) // 2, 2
    
    
    //==  ===运用
    console.log(5==5)
    console.log(5=='5')
    
    console.log(5===5)
    console.log(5==='5')
</script>

04-分支结构

<script type="text/javascript">
    //js中的分支结构有两个,if语句和switch语句
    
    /*
    1.if语句
      a.结构:
        if(条件语句){
            条件语句成立执行的代码块
        }
      说明:
        if - 关键字
        (){} - 固定写法
        
        
      b.if - else
        if(){
            
        }else{
            
        }
        
      c.if - else if - else
        if(){
            
        }else if(){
            
        }else{
            
        }
      
      执行过程:判断条件语句是否为true,为true执行大括号的内容(不管缩进问题)
    */
    
    //if判断是否偶数
        var num = 9
        if(! num&1){
            console.log('是偶数')
        }else{
        console.log('是奇数')  
        }
    
    
    /*
    2.switch语句
      结构:
        switch(变量/表达式){
            case 值1:{
                代码段1
            }
            case 值2:{
                代码段2
            }
            default:{
                代码段3
            }
            
        }
        
        
      执行过程:
        先计算switch变量或者表达式的值,从上往下找到值与表达式相等的case,执行相应的case后面的所有的代码段,执行完或者遇到break为止
    
    */
    
    //switch语句
    num = 10
    switch(num){
        case 1:{
            console.log('1')
        }
        case 10:
            console.log(true)
        default:
            console.log('没有找到')
        break
        case 3:
            console.log('3')
    }
    
    
    //练习:或服务器获取到的星期对应的值是0-6,在程序中对应打印出其对应的星期值
    week = 5
    switch(week){
        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
        case 0:
            console.log('星期日')
    }
    
    //练习2:有一个变量存绩点(整数:1-5) 0 不及格  1-3  及格  4-5  优秀
    score = 3
    switch(score){
        case 0:
            console.log('不及格')
            break
        case 1:
        case 2:
        case 3:
            console.log('及格')
            break
        case 4:
        case 5:
            console.log('优秀')
        default:
            console.log('成绩有误')
    }
    
    
</script>

05-循环结构

<script type="text/javascript">
    //js中的循环有for循环和while循环,每种循环有两种结构
    
    /*
    1.for循环
        a.for-in循环:和python的for循环的执行过程一样,但取出来的是元素的下标
          结构:for 变量 in 序列{
                    循环体
                }
        
        b.c结构的for循环
          结构:for(表达式1;表达式2(为条件语句);表达式3){
              循环体
          }
          执行过程:先执行表达式1,再判断表达式2的结果是否为true,为true就执行循环体,执行完循环体再执行表达式3
                  执行完表达式3在判断表达式2的结果是否为true,为true就执行循环体,执行完再执行表达式3,指导表达式2的结果为
                  false,整个循环就结束
          书写思想:表达式1里面写循环开始前的准备工作
                   表达式2中写控制循环次数的条件
                   表达式3中写的是让表达式2的条件接近于结束的条件
                   
    */
    
    // for-in循环遍历出的是下标或者属性名
    a = [10, 20, 30]
    for(x in a){
        console.log(x, a[x])
    }
    
    object1 = {name:'小明', age:18}
    for(x in object1){
        console.log(x, object1[x])
    }
    
    //c的for循环 1+2+..100
    for(num = 1, sum1 = 0; num <= 100;num += 1){
        sum1 += num
        // console.log(sum1)    
    }
    console.log(sum1)
    
    
    
    /*
    2.while循环
        a.while循环:和python的while循环一样
          格式:while(条件语句){
                循环体
               }
      
        b.do-while循环
          格式:do{
              循环体
          }while(条件语句)
          
          执行过程:先执行循环体,然后再判断条件语句是否为true;为true就执行循环体,执行完在判断
                   直到条件语句的结果为false,循环就结束
    
    
    
    
    3.break  continue  和python一样
    
    */
    
    
    
    
    
    
    
</script>







06-函数

<script type="text/javascript">
    //函数分为声明和调用,声明的时候不会执行函数体,只有调用才会执行函数体
    
    /*
    1.函数的声明
      a.和python相同的声明方式
        function 函数名(参数列表){
            函数体
            return 返回值
        }
    
      说明:function - 声明函数的关键字
            函数名 - 驼峰式命名,见名知义
            参数没有设置默认值,默认为undefined
            返回值 - 没有return返回值为undefined
    
    
      函数的调用:
        格式:函数名(实参列表)
        调用的时候保证每个参数都有值
        关键字参数没有效,只能通过位置参数传参,也不支持不定长参数
    */
    
    
    function sum2(num1, num2){
        return num1 + num2  
    }
    console.log(sum2(1, 2))
    
     
      /*
      b.以声明变量的形式声明变量
        函数名 = function(参数列表){
            函数体
            return 返回值
        }

    
      */
    
      // 两数之和
      sum12 = function(math, chinese){
          return math * chinese
      }
      console.log(sum12(10, 10))
    
    
    
</script>

07-字符串

<script type="text/javascript">
    /*
    1.字符串:有单引号或者双引号括起来
        a.字符串内可以有转义字符:和python一样
        b.字符串长度:字符串.length
        c.获取单个字符:字符串[下标]
          注意:js中的下标范围是0-长度-1,超出范围取到的是undefined
               js中没有切片语法
        
        d.相关运算符
          +:将两个字符串拼接在一起,如果是字符串加上其他数据,会先将其他数据转化成字符串再拼接在一起
          比较运算(>  <  ==  !=  ===  !==  <=  >=):和python一样,比较字符的编码值大小
        
        e.相关方法(看菜鸟的表)
          match(正则表达式) - 根据正则表达式匹配结果
    
    */      
    
    
    console.log('abc\n123')
    console.log('abcde12345'.length)
    
    // 获取单个字符,不支持负的
    str1 = 'abcdefg'
    console.log(str1[1])
    // 运算
    a = 'abc', b = 'def', c = 10
    console.log(a + b)
    console.log(a + c, a + true, a + [1, 2, 3])
    // console.log(a*c)  不支持乘法,结果为NaN 表示数字不存在
    console.log(c/0)   //结果为Infinity  表示无穷大
    console.log(a > b)
    
    // 相关方法
    str1 = 'abc23hjs89jskk834jsdfj78hfjh9sdf9'
    result = str1.match(/[a-zA-Z]+/)
    console.log(result)
    
    result2 = str1.replace(/\d+/, '*')
    console.log(result2)
    
    
</script>

08-数组

<script type="text/javascript">
    //数组就是python中的列表
    /*
    1.数组是有序、可变的
    2.增删改查
    
    
    
    
    */
    
    
    /*
    a.查(获取数组中的元素, 不支持切片)
      只能获取单个不能获取部分
      数组[下标]
    b.增(添加元素)
      push() - 将元素添加到数组的最后,相当于python中的append
    
    c.删
      array.pop() - 删除最后一个元素
      array.shift() - 删除开始元素
      array.slice(开始下标,结束下标) - 切片
      array.splice(开始下标,个数) - 从开始下标开始删除指定个数元素
    
    d.改(修改元素的值)
      数组[下标] = 新值
      array.splice[开始下标,个数,多个其他参数] - 先删除开始下标加个数选择的元素,再在开始下标处添加多个其他的参数
      
    
    */
    arr1 = [1, 2, 3, 'abc']
    console.log(arr1[3])
    console.log(arr1.length)  //获取数组长度
    
    arr1.push('hello')
    arr1[5] = 8
    console.log(arr1)
    
    arr1.pop()
    console.log(arr1)
    
    result = arr1.slice(0, 2)  //切片
    console.log(result, arr1)
    
    result = arr1.splice(3, 1)
    console.log(result, arr1)
    
    arr2 = [1, 2, 3, 5]  //改
    arr2[0] = 10
    console.log(arr2)
    
    arr2.splice(0, 2, 'b', 'a', 'c') //将开始下标的到个数的元素删除,然后再开始下标处增加后面的元素
    console.log(arr2)
</script>

09-对象


<script type="text/javascript">
    /*
    js中没有python中的类,只有对象和构造方法
    
    1.对象的字面量
    {属性名:属性值, 属性名:属性值......}
    
    2.使用对象属性
        对象[属性名]
        对象.属性
    */
    
    p1 = {
        //对象属性
        name:'小明',
        age:18,
        tel:'213213',
        //对象方法
        eat:function(){
            console.log('吃饭')
        }
    }
    
    console.log(p1['name'])
    console.log(p1.age)
    p1.eat()
    
    
    /*
    3.构造方法(有点类似python中的类)
    function 名字(参数列表){
        this.属性1 = 属性值1
        this.属性2 = 属性值2
        
        return this
    }
    
    这儿的this类似于python中的self,表示当前对象
    */
    
    function Person(name, age, tel){
        //属性
        this.name = name
        this.age = age
        this.tel = tel
        //方法
        this.eat = function(food){
            console.log(this.name + '再吃' + food)
            
        }       
        return this
    }
    
    p1 = Person('小明', 18, 1800000000)
    console.log(p1.name, p1.age, p1.tel)
    p1.eat('🍎')
    
    //声明一个狗的对象对应的构造方法,颜色 年龄 品种,方法 吃  叫
    
    function Dog(name, color, age, kind){
        this.name = name
        this.color = color
        this.age = age
        this.kind = kind
        
        this.eat = function(food){
            console.log(this.name + '在啃' + food)
        }
        this.bark = function(){
            console.log('汪汪汪')
        }
        return this
    }
    
    d1 = Dog('旺财', '红色', 1, '中华田园犬')
    d1.bark()
    d1.eat('骨头')
    
    
</script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,376评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,126评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,966评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,432评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,519评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,792评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,933评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,701评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,143评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,488评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,626评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,292评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,896评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,742评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,324评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,494评论 2 348

推荐阅读更多精彩内容

  • 偶然看到手机里哥哥的自拍,心里突然一种奇怪的感觉,好难过。看着他紧皱的眉头,粗糙的皮肤,这才意识到哥哥已经二十六岁...
    菜花的小青春阅读 174评论 0 1
  • 大理宾川碳源电子商务有限公司(车小将尾气清洁剂)开业庆典定于2018年3月8号在宾川大酒店举行,特邀请亲们报名参加...
    范哥1314阅读 97评论 0 0
  • 这里是位于城外的一个住宿区,没什么不好的,就是经常下雨,街道和房子破落了一点。来往的人稀稀落落都是些过客,除了些土...
    懵木木头阅读 124评论 0 1
  • 有开始就有结束,参加奥运会也是如此。 今年又有哪些运动员参加完奥运会即将退役呢? 林丹 林丹被视作羽毛球历史上最伟...
    陪跑阅读 346评论 0 0