zoukankan      html  css  js  c++  java
  • 前端 day 05 5.15 JavaScript入门

    5.15

    昨日回顾

    • 清除浮动带来的影响

      浮动的元素会造成父标签塌陷,写一个div,盒子带有clear属性,提前写好这个class,只要有塌陷就使用

      .clearfix:after {
      	content:'';
      	display: block;
      	clear: both;
      }
      
    • 溢出属性

      overflow:hidden;
      overflow:scroll;
      

      案例:圆形头像

    • 定位

      静态,相对定位,绝对定位,固定位置

      static,relative,absolute,fixed

      如果将标签的position由static改为relative,那么标签就会由没有定位过的标签变成定位过的标签

      绝对定位:相对已经定位过的父标签,如果没有则以body作为参照

      固定:相对于浏览器窗口

    • 验证是否脱离文档流

      脱离:浮动,固定,绝对

      不脱离:相对

    • z-index,越大,离人的距离越近

      案例:百度登陆页面,三层结构

    • 模态框

    • 透明度:opacity,可以改变颜色和字体

    • 动手写简易博客

      1. div划定区域
      2. html占位
      3. 最后调节样式
      	再给标签起id或class属性的时候,应该做到见名知意
      4. 写CSS
      5. 先用注释表明用途,以及作用区域
      6. 通用样式
      	body,html {margin:0;}
      	a {text-decoration: none;}
      	ul {list-style-type: none; padding-left: 0;}
      
    • js简介

      一门编程语言,但是内部逻辑有bug,不严谨

    • JavaScript

      //注释
      /*注释*/
      /*书写方式:script标签引入js外部文件*/
      /*js用分号作为语句的结束,但是不写也问题不大*/
      
    • js变量

      声明变量必须用关键字

      var全局,let局部

      实际上不用这个关键字也能用

    • 常量

      const pi = 3.14
      /*不能修改*/
      

    今日内容

    • 数值类型
    • 字符类型
    • 布尔值
    • null,undefined
    • 对象:数组,自定义对象,内置对象
    • 流程控制:if,while
    • 函数
    • 内置对象:时间对象,正则对象
    • json对象
    • bom操作,操作浏览器实现动态效果等

    变量

    • js变量的命名规范

      1. 变量名只能是数字,字母,下划线,$
      2. 推荐使用驼峰体
      3. 不能使用关键字
      

    数据类型

    js/python是一门动态类型语言

    name = 'deimos'
    name = 123
    name = [1,2,3]
    /*name可以指定任何的数据类型*/
    

    数字类型

    查看当前数据类型

    typeof a;
    var a = 11;
    //"number"
    

    NaN,表示不是一个数字(Not a Number)。

    字符类型 string

    可与用单引号,双引号定义字符串,不支持三引号

    var a = 'aaa';
    typeof a //"string"
    //横板字符串
    var b = `
    aaa
    bbb
    ccc
    `
    //可以定义多行字符串,除此之外,还可以实现字符串的格式化
    var name = 'deimos'
    var age = 21
    var sss = `
    my name is ${name} my age is ${age}
    `
    //有$ 自动往前面找这个变量名,有就会把这个变量名塞进去,如果没有这个变量名就会报错
    

    字符串的拼接

    python中不推荐使用+ 加号拼接,js里推荐直接使用加号拼接字符串

    字符串方法

    1589508286067

    切片,使用slice,不用substring

    布尔值

    python中布尔值是首字母大写的,True,False,js中布尔值是全小写的:true,false

    js中的布尔值:0,null,undefined,NaN,空字符串

    null:空
    undefined:声明一个变量,但是没有做初始化操作,函数没有返回值的时候
    

    对象

    JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...此外,JavaScript 允许自定义对象。

    JavaScript 提供多个内建对象,比如 String、Date、Array 等等。

    对象只是带有属性和方法的特殊数据类型。

    数组

    类似列表 [],可以存多个数据,不同的数据类型,但是不支持负数

    var a = [123, "ABC"];
    console.log(a[1]);  // 输出"ABC"
    

    1589510461650

    三个比较重要的方法

    foreach,slice,map

    //forEach
    var l1 = [111,22,33,444]
    l1.forEach(function(value,index){console.log(value,index)},l1)
    111 1
    22 2
    33 3
    ...
    //相当于for循环后面的对象,依次交给前面的函数处理
    //function中参数的用途是forEach固定的
    //元素,索引,数据来源
    //最多三个参数,如果l1里的是数组,会显示成Array
    
    //slice
    
    
    //map
    var l1 = [11,22,33,44,55]
    l1.map(function(value,index){return index*value},l1)
    

    运算符

    //算术运算符
    var x = 10;
    var res = x++; //加号在后面,先做赋值,后自增
    var res2 = ++x; //加号写在后面,先自增后赋值
    res1 10 //x自增1
    res2 12
    
    //比较运算符
    1 == '1' true
    //js中,两个等号会自动转换成相同的类型比较,若等于
    1 === '1' false
    //连同类型一起比较,不做转换,强等于
    
    //逻辑运算符
    && || ! //and or not
    5 && '5' //'5'
    0 || 1 // 1
    !5 && '5' //false
    //比较的时候返回布尔值,;逻辑运算的时候返回两边的元素
    

    流程控制

    if switch for while

    //if判断
    var age = 20;
    if (age<18){
    	console.log('come')
    }else if(age<16){
    	console.log('no')
    }else{
    	console.log('go')
    }
    //js中是没有缩进的,完全可以写在一行
    //(条件){代码块}
    
    //switch语法
    switch(num){
        case 0:
            console.log('吃饭');
            break;
        case 1:
            console.log('睡觉');
            break;
        case 2:
            console.log('按摩');
            break;
        default:
            console.log('匹配不上默认走的');
            break;
    }
    //case里要加break,如果不加,匹配到一个之后就会一直往下执行,下面的代码没有触发也会执行
    
    //for循环
    for(let i=0;i<10;i++){
        console.log(i)
    }
    //for(起始条件,循环条件,每次循环后的操作){循环体}
    //例1:循环打印数组的每一个元素
    var l1 = [11,22,33,44,55,66];
    for(let i=0;i<l1.length;i++){
        console.log(l1[i])
    }
    
    //while循环
    var i = 0
    while(i<100){
        console.log(i)
        i++;
    }
    
    //三元运算符
    var res =  x>y ? x : y
    /*条件成立,取冒号前面的值,不成立,取冒号后面的值;可以嵌套*/
    //嵌套的时候从最里面一层开始算
    

    函数

    python中定义函数用def,js中定义函数要用 function

    function 函数名(形参1,形参2){
    	函数体代码;
    }
    
    //无参函数
    function func1(){
        console.log('hello')
    }
    //有参函数
    function func2(a,b){
        console.log(a,b)
        console.log(arguments)
    }
    func2(11,22);
    //在调用的时候,多传,少传都不会报错,少的会用undefined顶着
    //arguments可以拿到函数拿到的所有参数
    

    函数的返回值

    //返回值使用的关键字也是return
    function index(){
    	return 666
    }
    //只能返回一个,如果要返回多个,可以返回一个数组
    //js里面没有解压赋值
    
    //匿名函数,不用写函数名,一次性使用
    function(){
    	return 666
    }
    

    箭头函数

    类似于python中的匿名函数,处理简单的业务逻辑

    var func1 = v =>v;
    //等价于
    var func1 = function(v){
    	return v
    }
    
    var func2 = (arg1,arg2) => arg1+arg2
    //等价于
    var func2 = function(arg1,arg2){
    	return arg1+arg2
    }
    

    函数的全局变量与局部变量

    跟python查找的顺序一致

    JavaScript也有闭包函数

    自定义对象

    可以看成python中的字典,但是js中的自定义对象比python中的字典操作更加方便

    创建自定义对象,两种

    //第一种,直接写一个字典
    var d = {'name':'aaa','age':21}
    //取值
    d['name']
    d.name
    //for循环取值,拿到的是字典的键
    
    //第二种,使用关键字new
    var d2 = new Object()
    d2.name = 'aaa';
    d2.age = 21;
    

    date对象

    let d3 = new Date()
    //得到当前的时间,也支持自己写一个时间进去
    //let d3 = new Date(1111,11,11,11,11,11),不过月份是从0开始的
    d3.toLocaleString()
    //获得一个更好看的日期格式
    
    //时间对象具体方法
    let d4 = new Date()
    d4.getDate()
    d4.getDay()
    d4.getMonth()
    ...
    

    JSON对象

    在python中,序列化与反序列化用的是dumps和loads

    js中也有序列化和反序列化

    json1 = JSON.stringify(d) // dumps:编码
    let res1 = JSON.parse(json1) //loads:解码
    

    正则对象

    RegExp对象,两种方式可以创建正则对象

    //第一种
    let reg1 = new RegExp('^[a-zA-Z][a-zA-Z0-9]{5,11}')
    //必须是字母开头,中间是5-11位的字母或数字
    
    //第二种
    let reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,11}/
    
    //匹配内容
    reg1.test('aaaaaqqqqq') //看是否符合,执行的结果是true/false
    reg1.match('aaaaaqqqqq') //拿到匹配的结果
    

    js的正则有很多bug,有些时候会获取不到我们想不到的结果

    如果什么都不传,默认传过去的是undefined

    Math对象

    
    

    总结

    • js数据类型:自己敲一遍
    • JSON对象
    • js如何操作页面,给页面有动态效果
  • 相关阅读:
    centos磁盘满了,查找大文件并清理
    centos如何查看磁盘剩余空间
    无法连接mysql,请检查mysql是否已启动及用户密码是否设置正确
    HTTP/1.1新建会话失败 解决方法及分析
    PHP 获取 IE浏览器版本号
    基于Android Studio搭建Android应用开发环境
    打印机重启后才能打印
    洛谷P1141 01迷宫【DFS】
    洛谷P1219 八皇后【DFS】
    UVA133
  • 原文地址:https://www.cnblogs.com/telecasterfanclub/p/12896672.html
Copyright © 2011-2022 走看看