学习js一周汇总

1.js的历史:
javascript是1995年网景公司雇佣布兰登开发的全新语言

javascript最初是为了实现浏览器的客户端交互

ECMAjavascript与javascript的关系是,前者是后者的规格,后者是前者的一种实现。

2.js的组成
ECMASCRIPT:定义了javascript的语法规范,描述了语言的基本语法和数据类型。

Bom(browser object Mode):浏览器对象模型

Dom(document object Mode):文档对象模型

3.书写位置
内嵌式:在body标签结束之前放<script></script>

外链式:新建一个后缀名为.js的文件,<script src="js的地址"></script>

行内式:把js定义到标签身上

<a href="javascript:alert('')"></a>

4.js的注释

单行注释://

多行注释:/**/

5.js的变量
变量:值变化的量,程序中用于存储数据的,本质上是内存的存储单元,理解为一个容器。

语法:var 变量名  (声明变量的关键字 变量名=值)
定义及赋值:var num=20

访问变量:console.log()
注意:一个变量名只能存储一个值,当在给一个变量名赋值时,前面的值就没有了,变量名称区分大小写。
变量名的命名规则:
1>由字母,数字,下划线,$符号组成
2>不能以数字开头
3>不能是关键字及有意义的单词
4>不能是保留字
规范:
语义化
小驼峰命名法;不能使用中文

6.内存结构
栈区域和堆区域

变量本质上是内存中的存储单元

 

7.数据类型
变量值的类型:两大类:基础数据类型和复杂数据类型

数值类型:number (所有数字)

特殊数字类型:NaN  非数字值

字符串类型:string(用引号引起来的)

如:var username='jack'

布尔类型:boolean

ture成立真,false成立假

空类型:类型名为object 值为null表示一个空对象

未定义类型:undefined 

var age(为赋值的为未定义类型)

8.判断数据类型
typeof 变量名/typeof(变量)

控制台显示数据类型(console.log(type of num))

10.console.log(变量,变量)
11.数据类型转换
转成数据类型:Number(变量名)

Number('')--->0

Number(true)--->1

Number(false)--->0

Number(Null)--->0

Number(undefined)--->NaN

数据类型转换:
parseInt()

特点:1>从左向右转换;

           2>遇到数值字符串转为数字;

           3>遇到非数值结束转换

           4>可以取整

           5>如果第一个为非数值,输出NaN

parseFloat()

特点:1>从左向右转换;

           2>遇到数值字符串转为数字;

           3>遇到非数值结束转换

           4>可以保留有效小数

       5>如果第一个为非数值,输出NaN
其他类型转字符串
string()

转出来的值加''就是字符串类型

变量:.to string(有一些数据不能使用,如undefined,null)

使用加法运算(连接符)


有两层含义:1.表示连接符(+号两边任意一边为字符串就是连接符)

                      2.表示算数运算加法运算

隐式类型转换

10+'20'---->'1020'

10+''----->'10'

其他类型转布尔类型:
只有 '',0,null,undefined,NaN转为布尔类型为false,其他的转出都为ture.

运算符:


1.算术运算符:+,-,*,/,%(取余)

2.隐式类型转换:除了加法以外都会自动把两边转为数字在进行计算

3.赋值运算符:=/==/===/!=/!==/>=/<=/>/<

把右边的值赋给左边:

+= ----->a+=10------>a=a+10

-= ----->a-=10------>a=a-10

*=//=/%= ---->与上雷同

==与===的区别:

​​​两个等号只是比较值是否相等

三个等号比较值和类型是否相等

!=与!==的区别:

!=比较两边值是否相等

!==比较两边值和类型是否相等

逻辑运算符:
逻辑与&&:同为真则真

true&&true------>true

false&&true------>false

短运算:false&&true----->false

逻辑与运算时,如果左边为false,右边不参与运算。

逻辑或||:同为假则假

false&&false------>false

false&&true------>true

逻辑非!:非真则假,非假则真

!true---->false

!false---->true

自增自减运算:

 

学习js的第二天

逻辑分支语句:
程序=语句+数据结构+算法

1.程序语句:

var num ----->变量声明语句

num=100 ------>变量赋值语句

console.log(num) ------>控制台输出语句

alert('helloword')---->弹框语句(函数调用语句)

2.逻辑分支语句:
if语句
   语法:

     if(条件表达式){

                             var num // 变量声明语句

                             num = 100 // 赋值语句

                             console.log(num) // 控制台输出语句

                            alert('hellworld') // 弹框语句(函数调用语句)

                          }

if-else语句:
        if(条件表达式){

                                语句块1

                               }else{ 语句块2 }

if-else-if语句:
        if(条件表达式1){

                                    语句块1

                                }else if(条件表达式2){语句块2 }

if语句嵌套
          if(条件表达式){

                                     语句块

                                     if(条件){ }

                                  }

 

 switch语句:
switch多分支语句
语法:

switch(表达式值){

                             case 值1: 语句块1 [break]

                             case 值2: 语句块2 [break]

                             case 值3: 语句块3 [break]

                             default: 语句块 }

 三目运算符:

条件?语句1:语句2

 

 var a = 23
        var b = 34
        var max = a > b ? a : b
        console.log('最大值为'+max)

学习js的第三天【循环】

三大结构:顺序结构,条件分支结构,循环结构

while循环语法:先判断条件,再确定是否执行语句
while (条件表达式){

                                    循环体------>循环执行的语句块(当条件不成立时才能跳出while循环)

                               }

                                    循环体一定要有改变条件的语句,否则会变成死循环

三要素:初始值,条件,改变条件的语句

如:

var n=10

whlie(n<0){

                      console.log(n)

                      n--}

do while循环语法:先执行一次循环体,再判断条件,再确定是否执行语句
特点:至少都要执行一次程序

do{

         循环体------>循环执行的语句块(当条件不成立时才能跳出while循环)

      }while (条件表达式);

  循环体一定要有改变条件的语句,否则会变成死循环

for循环语法:

for (初始化;条件;改变条件的语句){  循环体}

示例:

 

break语句:终止循环和循环语句一起用

示例:

 

continue语句:结束本次循环,继续下一次循环

本次循环结束,continue后面的代码不执行,继续下一次循环。

 计数器:定义变量,初始值为0,如果满足条件加1

示例:

document.write语句:内容显示到页面 

 

双重for循环 :for循环里套for循环(外层循环循环一次,里层循环就要循环完)

示例:

 

打印九九乘法表:

 学习js的第四天:函数

函数

定义:对任意功能的代码进行封装,在需要的时候进行调用

把函数比作一个盒子,盒子里面装代码,通过盒子的名称找到盒子执行里面的代码

1.盒子封装代码

2.调用盒子执行代码

语法:

function 函数名(){------------>定义函数
  函数体(要执行的代码)
}
函数名()------>函数的调用语句

 一、函数的作用

封装函数,封装目的:复用代码

二、函数的参数

function 函数名(形参){
       要执行的代码
}
函数名(实参)

 

形参:定义函数时,在函数名括号中定义的变量称为形参

实参:使用函数调用语句,调用函数时,传入的实际参数值

参数个数:可以定义多个

function 函数名(m,n){
   要执行的代码
  }
  函数名(100,200)
m,n与100,200为一一对应的关系

 参数个数不匹配时:形参个数多于实参

function 函数名(m,n){
   要执行的代码
  }
  函数名(100)
m=100,n=undefined

 实参的个数多于形参:没有接收的实参无意义

三、函数的返回值:return语句

作用:终止函数,不让它执行下面的代码,返回函数调用处,继续执行下面的代码

无返回值

function 函数名(){
      console.log('')
       var i=0
      return (终止函数)------>return后面的语句不会执行
      console.log('i')
  }
  函数名()

有返回值

function fun(){
      console.log('')
       var i=0
      return 100
      console.log('i')
  }
  fun()-------->会把100返回调用处,100的值就在fun()中,即fun(100)

函数类型:根据函数参数和返回值,分为四类

1.无参无返回值:

function fun(){
                函数体
       }
       fun()

2.有参无返回值:

function fun(m){
  要执行的代码
 }
 fun(100)

3.无参有返回值

function fun(){
      要执行的代码
      return 100
   }
   fun()-------->返回的100,在fun中,即fun(100)

4.有参有返回

function fun(m){
     console.log('')
     return m+100
  }
  var m=fun(200)

参数的默认值:

封装函数的示例:

 <!-- 封装比较两个数的大小函数 -->
    <script>
        function getMax() {
            var a = 35
            var b = 66
            var max = a
            if (b > max) {
                max = b
                console.log(max)
            }
        }
        getMax()
    </script>
    <!-- 封装闰年 -->
    <script>
        function getMax() {
            var year = 2020
            if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
                console.log(year + '是闰年')
            } else {
                console.log(year + '不是闰年')
            }
        }
        getMax()
    </script>

有参数示例:

<!-- 封装比较两个数的大小函数,实参,形参 -->
    <script>
        function getMax(a,b) {
            var max = a
            if (b > max) {
                max = b
                console.log(max)
            }
        }
        getMax(55,68)
    </script>

返回值:

学习js的第五天【作用域,递归,对象,数组】

一.作用域
===>变量起作用的范围

1.局部作用域:在函数体中作用范围
2.全局作用域:在整个js全局起作用
var num=100 ----->全局作用域
function f(){
  var num1=200 ----->局部作用域
  }
console.log(num1) 输出的结果会报错,说num1是不被定义的
console.log(num)  正常输出100,num为全局作用域 
作用域的访问规则:作用域的查找机制只能向上找,不能向下找
层层查找的关系,叫作用域链
1.会在当前作用域找访问变量

2.如果当前作用域没找到,到上级作用域去找

3.如果上级作用域没有,接着向上找,直到全局作用域

4.如果全局作用域也没有,直接报错.

赋值规则:

1.赋值前在当前作用域查找

2.上级作用域查找,找到赋值

3.上级作用域查找,直到全局作用域

4.如果都没有找到,将创建全局变量,然后赋值

内层函数可以访问外层函数作用域变量
外层不能访问内层作用域变量
二、递归函数
1.定义:函数自身调用自身,这样的函数称为递归函数(一定要有结束递归的条件)
function fun(){
  console.log('fun')
  fun()
} -------->没有结束递归的条件就会形成死递归
有结束递归的条件
function fun(n){
  if(n==1){ ------------>递归结束的条件
   return 1
}
console.log('fun')
fun(--)  ------------>改变递归条件的代码
}
fun(2)
注意:递归结束的条件
         改变递归条件的代码
2.递归的作用:
解决哪些问题:
1>后面的结果由前面的推导出来,可以采用递归简化代码

求1+2+3+4+.....+100前三项的和
function f(n){
 if(n==1){
  return1
}
return f(n-1)+n
}
var sum=f(3)
列题:
  <!-- 递归-斐波那契 1, 1, 2, 3, 5, 8, 13 ...   前两项都是 1, 后面项等于前两项之和    -->
    <script>
        function f(n){
            if(n<=2){
                return 1
            }
            return f(n-2)+f(n-1)
        }
        var m=f(7)
        console.log('第七项的值:'+m)
    </script>
 
 
 
   <!-- 求1*2*3*4........前n项的乘积
      分析:f(1)=1
            f(2)=f(1)*2
            f(3)=f(2)*3 ======>f(n)=f(n-1)n -->
<script>
    function f(n){
        if(n==1){
            return 1
        }
        return f(n-1)*n
    }
    var m=f(3)
    console.log('前三项的乘积:'+m)
</script>
 
 
 <!-- 求1+2+3+4+.....前三项的和 -->
    <!-- 分析:f(1)=1
         f(2)=f(1)+2
         f(3)=f(2)+3====》f(n)=f(n-1)+n -->
    <script>
        function f(n){
            if(n==1){
                return 1
            }
            return f(n-1)+n
        }
        var m1=f(5)
        console.log('前三项的和:'+m1)
    </script>

三.对象
1.对象==》object

   属性        方法

2.创建对象:

var jackobj(对象名)={}  -------》创建空对象

var jackobj={

                        name:jack, --------->表示对象的一个特征,属性

                       age:18}

1.创建
var obj{
         name:'jack',
         age:18,
         sex:'男'
       }
2.访问:对象名.属性名
console.log(obj.name)
3.修改属性值:对象名.属性名='要修改的名字'
obj.name='rose'
4.删除属性:delete 对象名.属性名
delete obj.name
5.添加属性:对象名.要添加的属性名=属性值
obj.height=180
6.遍历对象属性:for-in
for(var key in obj){  ------->可以遍历整个对象的所有属性名和属性值
console.log(key)}
7.访问属性值,属性名是变量的情况:
var _name='name'
console.log(obj.[_name])

示例:
 <!-- 创建一个名为student的学生对象,有属性学号num,性别sex,班级grade, 成绩score, 姓名name
    分别用字面量方式和构造函数方式创建.
    要求打印显示学生信息到页面 -->
        var studentobj={
            name:'acy',
            sex:'女',
            grade:'三年二班',
            score:'优秀',
            num:'11009998'
        }
        // 遍历对象属性
        for(var key in studentobj){
            console.log('key'+ ' ' +key+ ' ' +'value'+' '+studentobj[key])
        }
        // 通过对象名访问对象属性:【对象名.属性名】
        console.log('姓名'+studentobj.name)
        // 修改属性值:【对象名.属性名='要修改的名字'】
        studentobj.name='ljm'
        console.log(studentobj.name)
        // 删除属性 【delete 对象名.属性名】
        delete studentobj.num
        for(var key in studentobj){
            console.log('key'+' '+key+'value'+' '+studentobj[key])
        }
        // 添加属性 【对象名.要添加的属性名=要添加的属性值】
        studentobj.height=180
        console.log('身高'+studentobj.height)
        for(var key in studentobj){
            console.log('key'+' '+key+'value'+' '+studentobj[key])
        }
        // 访问属性值,属性名是变量的情况
        var _name='name'
        console.log(studentobj[_name])

3.数据类型:

var num=100 ------->number类型

var name='jack' ------->string类型

var obj={name:'jack',age='18'} --------->复杂数据类型

obj   数据类型名--------->  object

4.创建对象new语句:
字面量方式:var obj={}

构造函数方式:
var obj=new object()

obj.name='jack',

obj.age=18 

四.数组 Array
1.数组的作用:存储一系列有序数据的集合

2.创建数组:

var arr=[1,2,'jack',true]

3.索引号(下标)

4.访问数组元素

console.log(arr[0])

5.数组长度 (元素个数):length属性

console.log(arr.length) ------->可以拿到数组的长度

6.遍历数组:for -------->循环变量表示数组索引号从0开始

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

console.log(arr[i])}

7.构造函数方式创建数组:

var arr = new Array() ------->构造函数方式
列:var arr=new Array(10,9,8)

字面量:var arr=[]-------->空数组

8.创建数组时只有一个元素,表示创建一个空数组长度为5

var arr=new Array(5)

9.直接控制台打印

console.log(arr)

示例:
 <!-- 现有5名学生,语文成绩分别是98,87,95,89,77分,请定义一个成绩数组存储学生成绩并遍历输出
    求5名学生总成绩?
    求大于平均分的学生成绩?
    有一个存储两个数的数组[3,6]写程序交换数组元素,输出[6,3] -->
        var scoreArr=[98,87,95,89,77]
        for(var i=0;i<scoreArr.length;i++){
            console.log(scoreArr[i])
        }
        var sum=0
        for(var i=0;i<scoreArr.length;i++){
            sum=sum+scoreArr[i]
        }
        console.log('总成绩:'+sum)
        var sum=0
        var average
        for(var i=0;i<scoreArr.length;i++){
            sum=sum+scoreArr[i]
            average=sum/scoreArr.length
            if(scoreArr[i]>average){
                console.log('大于平均分:'+scoreArr[i])
            }
        }
        console.log('平均分:'+average)
    </script>
    <!-- 有一个存储两个数的数组[3,6]写程序交换数组元素,输出[6,3] -->
    <script>
        var arr=[3,6]
        // console.log(arr)
        var temp=arr[0]
        arr[0]=arr[1]
        arr[1]=temp
        console.log(arr)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值