前端学习记录 第二周总结

目录

day01:

CSS:

        1.定位属性:

JavaScript:

        一.JavaScript的使用方式:

        二.JavaScript的变量定义以及数据类型的划分:

        三.关于+:

        四.js的算术运算符:

        五.赋值运算符:

        六.js的关系(比较运算符):

        七.js的逻辑运算符

day02:

        一.三元(三目运算符):

        二.位运算符(扩展的符号)

         三.js的流程控制语句:

 day03:

        一.循环的扩展:

day04 :

        一.跳转控制语句

        二.函数(方法)

day05 :

        一.数组:

        二.数组的遍历:

        三.数组的最值问题:

        四.数组的冒泡排序:

经典算法题:

         


day01:

CSS:

        1.定位属性:

        是可以将元素按照定位的类型进行移动

        position:

                绝对定位(absolute) (如果是块标签设置,类似浮块)

                        相对使用根据该元素的祖先元素(父元素或父标签)进行移动

                        如果当前元素没有父元素,就是body进行移动;

                相对定位:

                        根据该元素原来的位置进行定位,(如果是块标签设置,还是占一行空间)

                固定定位

                        fixed:根据父元素进行定位的一种方式

                        特点:不会随着滚动条的滚动而滚动

                left:设置定位左边的距离

                top:设置定位上边的距离

JavaScript:

        一.JavaScript的使用方式:

                内部方式:在head标签体中或者body下面书写

                script标签.type默认不写

                                (省略 脚本类型"text.jscript"或者"text/javascript")

                JavaScript常用的内置函数:

                        1.向浏览器打印内容

                                document.write("需要打印的内容")

                        2.弹消息提示框(window是浏览器窗口,顶级对象,可以省略)

                                window.alert("需要弹出的内容")

                        3.在浏览器的控制台输出内容

                                内置对象:console

                                console.log("需要输出的内容") (日志函数)

                外部方式:导入外部js文件

                        script标签必须

                                1.结束标签

                                2.src属性="js文件地址"

        二.JavaScript的变量定义以及数据类型的划分:

                变量:在程序的执行过程中,其值在不断发生改变的量就是变量

                js中定义变量的注意事项:

                        1.定义变量的三要素:var 变量名 = 初始化值;

                        2.定义所有的变量都是var,而且var可以省略不写

                        3.js中,变量可以重复定义,后面的值将前面的值覆盖

                        4.JavaScript是一个弱类型(语法结构非常不严谨)的语言

                基本数据类型划分

                        1.无论是整数还是小数,数据类型都是number类型

                        2.布尔类型:boolean:用于逻辑判断,要么true(真) 要么false(假)

                        3.字符串类型:string:无论变量值是"字符串"还是'单个字符'结果都是string类型

                        4.未定义类型:undefined(没有意义)

                引用数据类型:

                        object类型:对象类型

                        object是js中的内置对象(浏览器本身存在的)

                        创建对象 格式: var 对象名 = new 对象();

                提示:字符串+任何数据=新的字符串(+:就是拼接符号)

        三.关于+:

                字符串拼接符号

                任何数据+字符串="新的字符串"

                字符串+任何数据="新的字符串"

                举例:"helloworld"+'a' ="helloworlda"
                        "helloworlda"+1  = "hellworlda1"

                        'a':是单引号括起来,数据类型是string(字符串)
                        'a' +1 = "a1"
                        "a1" +"helloworld" = "a1helloworld"

                number类型+number类型是加法运算

                举例:5+5  = 10 此时+是加法运算
                        10+"=5+5" = "10=5+5"

                提示:"双引号括起来的"或者js中''--都是string字符串
                        字符串就是常量

        四.js的算术运算符:

                基本的算术运算符:

                        (js中/不会默认取整,而java语音是默认取整的)

                        +, - , *, /, %(模:求余)

                拓展的算术运算符

                        ++或者--

                                单独使用时:

                                        无论++或者--在数据的前面还是数据的后面都是对当前这个值进行自增或者自减1

                                举例:var a = 3 ; 
                                        var b = 4 ;

                                       无论是 ++a还是a++ 都是4(--同理)

                                参与运算时:

                                        1.++或者--在数据的前面,先自增或者自减,然后运算

                                        2.++或者--在数据的后面,先运算再自增或者自减

                                举例:var m = a ++ ; 将a先赋值给m,m的值3 ,a变量在自增3++ 是4
                                        var m = ++a ; 将m的值先自增再赋值给m m是4 a也是4

        五.赋值运算符:

                最基本的赋值运算符就是"="

                var 变量名 = 值;

                将值赋给变量名

                注意事项:"="不写成==

                扩展的赋值运算符:

                +=,-=,*=,/=,%=

                        将扩展的赋值运算符左边的变量和右边的数据值操作后,将赋值给左边的变量

                        举例:var a = 10;
                                 a += 20;        拿a+20在赋值给a 等价于 a = a+20 ;

        六.js的关系(比较运算符):

                关系运算符:

                        无论这个符号连接的表达式再怎么复杂,结果都是true或者false

                        <,>,<=,>=,==,!=

                         注意事项:==不能写成=

        七.js的逻辑运算符

                逻辑运算符的基本符号:

                        逻辑单与&:并列关系,多个条件同时满足(有false则false,有一个不满足就不成立)

                        逻辑单或|:多个条件只要满足一个即可成立(有true则true,有一个满足则成立)

                        逻辑异或^:相同则为false,不同则为true

                        逻辑!:非true则false,非false则true

                逻辑双与&&和逻辑双或||

                        逻辑双与&&和逻辑双或||属于逻辑运算符的扩展运算符

                                逻辑双与:&& 有false则false(多个条件同时满足则成立)

                                逻辑双或:|| 有true则true(多个条件有一个满足则成立)

                                逻辑双与&&和逻辑单与&的区别:逻辑单与&执行效率比逻辑双与&&低

                                        &:表达式1&表达式2 遇false则false 如果表达式1为false则不成立 逻辑单与还会继续往下执行表达式2 直到执行完 开发效率低

                                        &&:表达式1&&表达式2 遇false则fasle 如果表达式1为false则不成立 那么右边直接短路 不继续往下执行

day02:

        一.三元(三目运算符):

                三元运算符带有一定逻辑判断

                格式:(表达式)?执行true的结果:执行false的结果;

                表达式无论简单还是复杂,结果都是boolean类型:true或者false

                举例:

                        var a = 10 ;
                         var b = 25 ;

                        (a>b)?a:b        a大于b吗 如果大于b 执行?后面的,如果不大于b,执行:后面的

        二.位运算符(扩展的符号)

                位运算符:计算机在对数据进行计算的时候,需要将这些数据进行"补码"操作(原码---反码---补码:有符号的数据表示法)

                位与&:有0则0

                位或|:有1则1

                位异或^:相同则为0.不同则为1

                ~:反码:全部按位取反,0变1,1变0

                扩展:二进制

                任意进制到二进制的转换:

 

                 十进制到任意进制的转换:

                 8421码:

                 有符号位的数据表示法:

         三.js的流程控制语句:

                顺序结构语句:JavaScript代码由上而下以此加载执行

                选择结构语句:if/switch

                        选择结构语句之if:

                                if语句格式:

                                if(表达式){

                                        语句;

                                }

                                        执行流程:如果表达式成立,则执行语句,否则不执行

                                if(表达式){

                                        语句1;

                                }else{

                                        语句2;

                                }

                                        执行流程:如果表达式成立,则执行语句1,否则执行语句2

                                if(表达式1){

                                        语句1;

                                }else if(表达式2){

                                        语句2;

                                        .......

                                }else{

                                        语句n;

                                }

                                        执行流程:先判断表达式1是否成立,成立则执行语句1

                                                        如果不成立,判断表达式2是否成立,成立则执行语句2

                                                        如果都不成立,执行else中的语句

                                        注意:程序写完测试 要考虑:

                                                1.边界数据是否正常

                                                2.范围内的数据是否正常

                                                3.测试错误数据是否是满足条件

                               if和三元运算符的区别:

                                if的范围大,它是流程控制语句,它不仅可以在里面使用赋值的方法去接收变量,也可以去使用输出语句document.write(需要输出的语句);

                                三元运算符是运算符号,只能操作具体的数据值,要么string/number..不能在里面嵌套使用document.write(需要输出的语句);

                                如果需求能够使用三元实现的,一定能够使用if实现,能用if实现的不一定能使用三元

                                选择结构之switch:

                                        switch格式

                                        switch(表达式或者某个变量){

                                                case 值1:

                                                        语句1;

                                                        break;

                                                case 值2:

                                                        语句2;

                                                        break;

                                                ........

                                                default:

                                                        语句n;

                                                        break;

                                        }

                                                执行流程:使用switch后面的变量值和case的值1进行匹配,

                                                                如果匹配,执行语句1,break语句结束,如果值1不

                                                                匹配,判断case后面的值2是否和switch后面的值

                                                                进行匹配,如果匹配则执行语句2,break语句结束

                                                                如果都不匹配,则执行default的语句n,遇见break

                                                                语句结束

                                        JavaScript中switch的注意事项:

                                                1.switch语句中case语句后面的值可以是常量,也可以是变量

                                                2.如果case语句中没有携带break语句,就会出现一种现象"case"穿透(灵活运用)

                                                3.switch语句的结束条件(重点)

                                                        1.遇见break结束(break:跳转控制语句        中断/结束!)

                                                        2.程序默认执行到末尾

                                                4.default语句可以在switch中的任何位置,不影响switch的执行流程,如果default在语句中,break不要省略,如果default在语句的末尾,break是可以省略的(建议不要省略)

                循环结构语句:for/while/do-while

                        循环结构语句之:for

                                for循环的格式:

                                for(初始化语句;条件判断语句;控制体语句){

                                        循环体语句;

                                }

                                        执行流程:

                                                1.初始化语句对变量进行初始化赋值(执行一次即可)

                                                2.判断条件语句是否成立,如果成立,则执行循环体语句

                                                3.执行控制语句(步长语句)这个变量自增或者自减

                                                4.判断条件是否成立,成立,继续执行循环体语句,再次回到3继续操作

                                                5.直到当表达式不成立,循环结束

                                                        循环也被成为"遍历"

                                while循环格式:

                                        通用格式:

                                        初始化语句;

                                        while(条件表达式){

                                                循环体语句

                                                控制体语句;(步长语句)

                                        }

                                                执行流程:

                                                        1.初始化语句先执行,进行赋值

                                                        2.判断条件表达式是否成立,成立,执行循环体语句,执行控制体语句

                                                        3.继续回到过程2...如果条件不成立,结束循环

                                do-while循环格式:

                                        初始化语句;

                                        do{

                                                循环体语句;

                                                控制体语句(步长语句);

                                                while(条件表达式);

                                        }

                                                执行流程:

                                                        1.初始化语句赋值

                                                        2.执行循环体

                                                        3.控制体语句进行自增或者自减

                                                        4.判断条件是否成立,成立,继续执行循环体,不成立结束循环

 day03:

        一.循环的扩展:

                循环加入求和思想

                需求:求1-10之间的和

                        求和思想:

                        0+1=1

                                1+2=3

                                        3+3=6

                                                6+4=10

                                                        10+5=15

                                                                        ......

                两个加数:

                        前面的这个加数从0开始,记录每一次求和的结果

                        后面的这个加数就是1-10之间的每一个数据

                操作:

                        1.定义一个最终结果变量sum:0开始

                        2.循环:将范围内的数据一一获取到:1-10

                                2.1循环中的循环体语句

                                        sum=sum+当前的变量

                                        简写:sum+=变量;

                举例:

                        var sum = 0 ; //最终结果变量
                        for(var x =1; x <=10 ; x++){
                                //循环体:
                                sum = sum + x ; //sum = 0+1     sum=1,sum =1+2 =3 
                               //sum = 3 + 3 = 6 
                       }
                    document.write("1-10之间的和是:"+sum+"<br/>") ;

                水仙花数:三位数,每一个位上的数据的立方之和就是数据本身

                如:153 = 1*1*1+5*5*5 + 3*3*3 

                需求:在浏览器中输出所有的水仙花数

                分析:

                        1.水仙花是三位数,明确了范围        100-999

                        2.使用for循环----100-999的所有数据都获取到

                                获取到的每一个数据的每个位上的数据本身

                操作:

                        153:获取个位/十位/百位的数据

                        获取低位:%模(求余)

                        var ge = 153 % 10 = 3

                        var shi = Math.floor(153/10%10)=5        Math.floor(数字)如果是小数向下取整

                        var bai = Math.floor(153/100%10)=1

                判断:

                        如果当前这个数据==(ge*ge*ge+shi*shi*shi+bai*bai*bai){

                               满足条件将数据打印在浏览器上

                        }

                Math.ceil(number):javascript提供内对象:数学的运算的向上取整
                Math.floor(number):向下取整

                举例:

                         for(var x= 100; x <1000;x++){
                                   //2)获取到的要每一个数据的每个位上的数据本身
                                   //定义三个变量:分别代表个位,十位,百位
                                   //%10 目的:获取低位
                                   var ge = x % 10 ;
                                   // 数据/10:目的 去掉低位
                                   var shi = Math.floor(x /10 %10 ) ;
                                   var bai = Math.floor(x/10/10 %10) ;
           
                                   //3)如果当前这个数据==(ge*ge*ge+shi*shi*shi+bai*bai*bai)
                                   if(x==(ge*ge*ge+shi*shi*shi+bai*bai*bai)){
                                       document.write("水仙花数是:"+x+"<br/>") ;
                                   }
                       }

                        统计思想:

                                1.先定义一个统计变量:初始化0

                                2.水仙花是三位数,明确范围,循环思想

                                3.计算每一个位的数据本身

                                4.当前这个数据就是个位的立方+十位的立方+百位的立方满足这个条件

                                        统计变量++

                                5.输出统计变量

                        举例:

                                var count = 0 ;
                                for(var i = 100 ; i <=999 ; i++){
                                    //定义三个变量,个位,十位,百位
                                    var ge = i % 10 ;
                                    var shi = (Math.floor(i /10)) %10 ;
                                    var bai = (Math.floor(i/10/10)) %10 ;
            
                                    if( i == (ge*ge*ge+shi*shi*shi+bai*bai*bai)){
                                                count ++ ; //++
                
                                        document.write("第"+count+"次的水仙花是:"+i+"<br/>") ;
                
                
                                            }
                                        }
                                        document.write("水仙花数共有:"+count+"个<br/>") ;
                        死循环:

                                利用死循环可以完成一些事情

                                while(true){

                                        完成逻辑

                                        产生一个随机数

                                        键盘录入数据

                                        判断数据大了,还是小了

                                        如果相等,退出循环 break

                                }

                                举例:

                                        while(true){
                
                                        //统计变量++
                                        count ++ ;
                
                                        //键盘录入
                                        var guessNum = prompt("请您输入一个数据:") ;
                                        /* if(guessNum =="" || guessNum == " "){
                                                    alert("请输入数值类型的数据") ;
                                                } */
                
                                                //string--number
                                                guessNum = parseInt(guessNum)  ;
                
                                                //如果猜的数字大于随机数
                                                if(guessNum > num){
                                                    alert("您要猜的"+guessNum+"大了") ;
                                                }else if(guessNum < num){
                                                    alert("您要猜的"+guessNum+"小了") ;
                                                }else{
                                                    alert("恭喜您,第"+count+"次,猜中了") ;
                                                            //结束循环
                                                            break ; //中断
                                                }
                                            }

                for循环和while的区别

                        1.格式不同

                        for(初始化语句;条件表达式;控制体语句){

                                循环体语句;

                        }

                        初始化语句:

                        while(条件表达式){

                                循环体语句;

                                控制体语句;

                        }

                        2.从内存角度考虑优先使用for

                        for循环结束,里面的变量就会从内存中被释放掉,节省内存资源

                        while循环结束,依然能访问这个变量,初始化语句在外面定义的

                        3.应用场景不同

                                明确循环次数使用for循环

                                不明确循环次数使用while

                                开发中优先使用for 循环

                do-while和for循环,while循环最大的区别

                        循环体至少循环一次

                                (开发中,用的很少)

                                底层源码使用很多:js前端框架(Jqeury)

                                后端语言:java语言(面向对象)

                                                集合/后面常用类的方法中见到源码涉及到do-while

                for循环嵌套

                        格式:

                        for(循环语句1;条件表达式1;控制体语句1){

                                循环体

                                for(初始化语句2;条件表达式2;控制体语句2){

                                        循环体语句;

                                }

                        }

                        举例:

                        for(var i = 0 ; i < 4; i++ ){//0,1,2,3
                              for(var j = 0 ; j < 5; j ++){ //0,1,2,3,4
                                    document.write("*") ;
                               }
                       document.write("<br/>") ;
                           }

                        for循环嵌套 外层循环控制行 内层循环控制列

day04 :

        一.跳转控制语句

                1.break:中断,结束的意思

                不能单单独使用

                在两个场景中使用

                        1.switch语句,本身格式就携带break

                        2.循环语句中使用 中断循环

                2.continue:继续的意思(结束当前循环,立即进入下一次循环)

                不能单独使用

                不能脱离循环语句(loop)中使用

                3.return:结束一个函数(方法),或者程序

                一般在函数(方法中使用)

                不能单独使用

        二.函数(方法)

                举例:

                        玩游戏植物大战僵尸,豌豆芽发射炮弹可能需要书写100行代码来完成,每一个关卡都有豌豆芽发射炮弹动作,每一个关卡中都需要是这100行代码代码冗余大(重复性大),提供代码的复用性,就将100行代码,放在{}里面并且要为{}起名字---函数名(方法名)以后只要见到豌豆芽发射炮弹,直接去调用这个函数名即可

                任何定义函数(方法)

                        在js中定义函数的格式:

                                function 函数名(参数名1,参数名2,.....){

                                        完成的函数的逻辑

                                        return 结果;

                                }

                调用函数:

                                赋值调用:

                                var 变量名 = 函数名(实际参数1,实际参数2.....)

                没有具体返回结果的函数定义的时候,跟有返回结果的函数定义相同,在函数体中直接输出

                                单独调用:

                                函数名(实际参数1......)

                完成函数定义的心里明确:

                                1.这个函数有没有返回结果;

                                2.考虑参数的数据类型以及参数个数

                函数的命名规范:遵循小驼峰命名法

                                单个单词:字母全部小写

                                多个单词:第一个单子全部小写,从第二个单词首字母开始大写,其余小写

                函数使用的注意事项:

                                1.定义函数的时候,形式参数上不能携带var

                                2.函数定义的格式不能省略{},否则不是一个函数,浏览器中js引擎是无法识别的

                                3.如果这个函数没有返回结果,那么赋值调用的是undefined(未定义)

                                4.无论任何语言中,有右括号的地方不能有分号,否则函数是没有"函数体"没有函数体的方法是没有意义的

        

                        

day05 :

        一.数组:

                数组:可以存储多个同一种类型元素的一个容器

                        在JavaScript语言中,数组可以存储不同类型的元素,但是开发中数组存储的必须为同一种类型的元素

                js中本身就存在一个Array内置数组对象

                固定格式:

                        (动态初始化:不给定元素)

                        var 数组名称 = new Array(); 不指定长度

                        var 数组名称 = new Array(size); 指定数组长度

                        (静态初始化:给定具体元素)

                        var 数组名称 = new Array([元素1,元素2....]);

                        可以简写为:var 数组名 = [元素1,元素2....];

                数组的属性:length (长度)

                                数组名称.length

                如何确定数组的元素

                                数组名称[角标值或者索引值]

                                索引值从0开始,数组的最大索引值=数组长度-1

                js(弱类型语言:语法以及结构都不严谨)中的数组,没有角标越界一说,它可以不断的给数组追加元素

        二.数组的遍历:

                var 数组名称 = new Array([元素1,元素2,元素3....,元素n])

                用for循环遍历数组 并打印

                for(var i = 0;i<数组长度;i++){ //定义i为0 代表数组的第一个值(角标为0) 并且要小于数组的长度 小于就继续打印 

                        document.write(arr[i])// 打印出数组中每个角标对应的元素

                }

        三.数组的最值问题:

                从已知的数组获取它的最大值:

                var arr = [20,13,24,56,44] ;

                首先定义一个参照物 认为它就是最大值

                var max = 0;

                遍历数组:

                for(var i = 1 ; i < arr.length;i++){
                //判断:如果后面的元素都比max大,参照物arr[0]就不是最大值
                if(arr[i] > max){
                    max = arr[i] ; //将后面的元素赋值给max
                }
            }

        四.数组的冒泡排序:

                定义一个数组

                   var arr = [20,13,24,56,44] ;    使它从大到小排序

                冒泡排序:

                实现逻辑:

                1.比较相邻的元素,如果第二个比第一个大使它们交换

                2.对每一对相邻的元素同样的工作,从开始第一对到结尾的最后一对,在这一点,第一个元素会是最大的数

                3.针对所有元素重复以上步骤,除了第一个

                4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数组需要比较

                通过两层循环控制:

                1.第一个循环(外循环),负责把需要冒泡的数组排除在外;

                2.第二个循环(内循环),负责两两比较交换

                

                //先进行冒泡排序

                for(var i = 0;i<arr.length;i++){

                        for(var j = 0;j<arr.length-1-i;j++){ //需要将上一个最大值排除在外

                                if(arr[j]<arr[j+1]){ //如果arr[j]比下一个角标的值小 就进入

                                        var temp = arr[j]; //定义一个中间变量存储arr[j]的值

                                        arr[j] = arr[j+1]; //将较大的值赋值给arr[j]

                                        arr[j+1] = temp;//再将原本是 arr[j]的值赋值给arr[j+1]

                                }

                        }

                }

                将排序好的数组打印输出

                for(var i = 0; i<arr.length;i++){

                        document.write(arr[i]) //56,44,24,20,13

                }

经典算法题:

我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题,
            * 该问题叙述如下:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?
翻译过来,意思是公鸡一个五块钱,母鸡一个三块钱,小鸡三个一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?

        首先列出公式:

                公鸡的数量+母鸡的数量+小鸡的数量=100

                5*公鸡的数量+3*母鸡的数量+小鸡的数量/3 = 100

        穷举法:

                100文钱:全部买公鸡20

                100文钱:全部买母鸡 33 Math.floor(100/3)(去除小数 向下取整)

        

        //定义变量公鸡,母鸡,小鸡的数量分别是x,y,z

                var x ,y ,z

                for(x = 0; x<=Math.floor(100/5); x++){ //能够取出所有公鸡数量

                        for(y = 0; y<=Math.floo(100/3); y++){ //能够取出所有母鸡的数量

                                //公鸡和母鸡的数量确定了以后 计算小鸡的数量

                                        z = 100 -x -y; //需要买100只鸡减去公鸡母鸡的数量就是小鸡的数量

                                        //需要满足的条件:

                                                //钱数100 5*x + 3*y +z/3 ==100

                                                //同时小鸡的数量是要能被3整除的

                                        if((5*x+3*y+z/3)==100 &&(z%3==0)){

                                                        document.write("公鸡的数量是:"+x+",母鸡的数量是:"+y+",小鸡的数量是:"+z+"<br/>") ;

                                        }

                        }

                 }

         

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值