js总结之ECMAScript

ECMAScript

ECMAScript 是一种标准式定义语法规范
JavaScript 是es的实现,包含es和DOM和BOM、事件等

JS是脚本语言,解释型语言(不需要编译),弱类型语言

命名规范:驼峰命名法(大/小)///GetMsg getMsg

所有的变量相当于给window对象设置属性

ECMA

1、网页引入js的方式

<script src=""></script>

内部js

<script>......代码</script>

2、定义变量

变量:存储信息的容器

var 变量名[=值]

例如:

var a;
var b=100;
var c=2,d='hello world',f='haa';

3、命名的规范

以字母开头,不能包含中文,不能以数字开头,也可以以$或者_开头,不推荐,对大小写敏感,不能使用关键词和保留字(this,var,top,window,break…)

4、数据类型

基本数据类型

  • 字符串 string
  • 数字 number(弱类型)
  • 布尔值 boolean(多用作判断,有两个值true/false)
  • undefined undefined(未定义 声明变量未赋值,没有初始化值)
  • null(空值空对象) object(目的:未来是一个对象,目前定义时(初始化时)占位)

引用数据类型(数组/对象/函数…)

  • object
    例如
var obj2 = {
            name: '张三',
            age: 20,
            isDie: fales,
            eat: function () {
                console.log('张三');
            }
        }
        console.log(obj2.name);//获取属性
        obj2.eat()
        obj2.age = 22//设置属性

注意:
数据类型赋值
基本数据类型:数值覆盖
复合数据类型:引用地址
https://www.cnblogs.com/c2016c/articles/9328725.html

5、输入输出调试方法

alert('1234')//弹出对话框
var inp=prompt('输入框,请输入内容')
alert(inp)//确定是返回输入的内容,取消按钮返回null
confirm('确定框')
var inp=confirm('')
alert(inp)//确认返回ture,取消返回false
var a=10
document.write(a)//在HTML页面输出

6、运算符

  • 算数运算符+ - * / %(求模运算符) ++(自增) --(自减)
 var a=10,b=20,c='5'
 console.log(a+b);30//两边都是数字时,进行加法运算
 console.log(a+c);105//字符串拼接
 console.log(5+a+c);//155   5+10+'5'
 console.log(c+a+5);//'5'+10+5==>'510'+5==>'5105'
 console.log(1+true);//2
 console.log(1+null);//1
 console.log(1+undefined);//NaN
 console.log(a-b);
 console.log(a-c);5//自动隐式转换
  • ++:
 var a=10  
 console.log(a++);//10
 var a=5,b=6
 a=b++//先用后加,先把b的值给a,b在加一
 console.log(a)//6
 console.log(b)//7
  • 一元运算符 + - ++ – 具备隐式转换功能
 var a='20'
 var b=-20
 console.log(-b);//20
 console.log(+a);//20  number  转换为数字的功能
 a++
 console.log(a);//21
  • 逻辑运算符 &&与 ||或 !非
  • 关系运算符 > < >= <= ==
  • 全等比较 (返回一个布尔值) != !== ===
  var a=10,b='10',c=20
  console.log(a>=b);//true  会隐式转换(只比较数值,不比较类型)
  console.log(a===b);//false 全比较

特例:

  console.log(0==false);//true
  console.log(0===false);//false
  console.log(null==0);//false
  console.log(null==false);//false
  console.log(null==undefined);//true
  console.log(null===undefined);//false
  console.log(null==null);//true
  console.log(undefined==undefined);//true
  console.log(0==undefined);//false
  console.log(false==undefined);//false
  console.log(NaN==NaN);//false   NaN不等于任何值
  • 赋值运算符 = += -= *= /= %=

  • 条件运算符 三目运算( 三元运算符) 条件?语句1:语句2

    例:

  var score=prompt('输入成绩')
  score>60?alert('及格了'):alert('下次努力')

7、数据类型转换

(1)强制数据类型转换

  • 转成整形数字(parseInt)

    转换规则 :看第一位是否是一个数字,如果是就提取,碰到不是数字(包括小数点)的就丢弃,如果第一位不是一个数字,就直接抛出NaN(not a number)//nan的数据类型式number

 var num=prompt('请输入值')
 console.log(num,typeof num);
 num=parseInt(num)
 console.log(num,typeof num);
  • 转成浮点型数字(parseFloat)

    转换规则 : 和上一个一样,只是可以保留小数点

  var num=prompt('请输入值')
  console.log(num,typeof num);
  num=parseFloat(num)
  console.log(num,typeof num);
  • 转成数字(Number())

    转换规则 : 看整体是否是全部式数字,可以包含小数点,如果有一个不是,直接NaN

Number 特例
   console.log(Number(null));//0
   console.log(Number(false));//0
   console.log(Number(true));//1
   console.log(parseInt());//NaN;
   console.log(Number());//0
   console.log(Number(''));//0
   console.log(Number(undefined));//NaN
  • 转换成字符(String)

    Boolean 转换成布尔值,0 null nan undefined ‘’ (空引号)的值为false

(2)隐式数据类型转换

  • 隐式类型转换

8、分支选择结构

  • 单分支选择结构

     语句:if(条件){条件满足执行}
    
  • 双分支选择结构

     语句:if(条件){条件满足执行}else{条件不满足执行}
    
  • 多分支选择结构

     if(条件1){条件1满足执行}else if(条件2){条件2满足执行}....else{以上条件都不满足执行}
    
  • switch

     语法:switch(变量){
               case 值1:语句;break;
               case 值2:语句;break;
               case 值3:语句;break;
               case 值4:语句;break;
               default:默认语句;
                                }
       break  跳出语句  结束当前判断语句
       continue  跳过当前一次循环
    

9、循环语句

  • while循环:先验证再循环
    a.初始化变量 循环计数
    b.条件
    c.计数的改变

  • for循环:先验证再循环

for(表达式1;条件;计数){满足则执行}
 例:for (var day = 0; day <= 9; day++) {
            document.write('这是' + day + '天<br>')
        }
  • do while:先循环再验证
 例:var day = 104
        do {
            document.write('第' + day + '天')
        }
        while (day < 10)

10、跳出循环

  • break:跳出循环
  • continue:跳过当前一次

11、函数声明与表达式

  • 函数:是一个可以反复调用的代码块

  • 函数的作用:封装和重用

  • 关键词 function

  • 定义函数

 (1)函数声明   (具名函数)
 function 函数名(){...要执行的代码块}
  (2)函数表达式   (匿名函数)       
 var 变量名=function(){...要执行的代码块}

12、调用函数

  • 函数声明的调用形式:任何位置被调用
    任何位置:同级作用域(函数声明会提升,JS会先把函数搜集起来;父级作用域中定义,子作用域中调用
    function show(){}
    show()//调用   
    show()//调用
    function show(){}
  • 函数表达式的调用:按顺序调用(变量提升,JS会先把变量搜集起来)
   var 变量名=function(){}
         变量名()  //调用
  • 全局作用域的函数可以在任何位置被调用
   function show(){}
   function fn(){show()}
   fn()//调用
  • 函数可以在自己你把调用自己–>递归函数

  • 事件调用

   <button onclick="clikme()">...<button>
   <script>
         function clikme(){}
   </script>

注意:
js 会预解析 ,提前搜集所有的变量 ,变量提升到最顶部

 console.log(a);//underfined
    var a=10
 show() //错误,变量提升,show是一个变量,不是一个函数
 var show=function(){}

函数声明也一样存在提升,叫做函数声明提升
函数声明提升比变量提升优先级高
优先级:函数>变量>参数

13、函数参数

  • 形参:函数声明时定义的参数,相当于定义变量

  • 实参:函数调用时的参数,相当于给参数赋值(实参多余形参对函数不会有任何影响)

  • 参数与变量的关系

 function show() {
        a = 10//在函数内部如果没有参数、没有var的情况  是设置全局变量 不推荐
    }
    show()
    console.log(a);//10
 function show(a) {
        console.log(a);//5
        a = 20//修改参数的值
        console.log(a);//20
    }
    show(5)
    console.log(a);//未被定义
function show(a) {
        //变量和参数同名,执行参数,因为变量提升的优先级低于参数
        console.log(a);//5
        var a = 20
        console.log(a);//20
    }
    show(5)
var a = 10
        function show() {
            b = 20//函数内部不使用var,操作变量相当于操作全局变量
                //(如果是var b = 20,就是局部变量,下面的console.log(b); 就不能访问)
        }
        show()
        console.log(a);//10
        console.log(b);//20
  • arguments :
    不声明形参是,再函数内部用来接收所有的实参
    应用在函数的重载
    类似数组的东西,具备数组的长度和下标,没有数组的方法
function show() {
        console.log(arguments);
    }
    show(1, 2, 3, 4)//Arguments(4) [1, 2, 3, 4, callee: ƒ, Symbol(Symbol.iterator): ƒ]

14、函数的返回值

  function show() {
        console.log('111'); return 5
    }
     console.log( show() )  

每一次函数调用拿的都是返回值

 var result=show()//reture拿的是show函数的返回值

每个函数都有返回值,没有显示声明的,返回值为undefined

  • return 后没有值时,返回值是undefined

  • return 后的语句不执行,相当于结束函数

 function show() {
        return 2
        console.log(4)
    }
    var fn = show()//2
    console.log(fn)//2
  • 返回多个值
  可以用对象或数组表示,对象 return {a:4,b:2}
  不可以 return 4,2//只返回2,返回逗号右边

15、设置函数的默认参数

  • 三元运算符
 function sum(a, b) {
            a = a ? a : 0   b = b ? b : 0 //判断b是否为真值,不是的话就为0                         
            console.log(a + b);
        }
        sum(1, 2)
        sum(1)
        sum()
  • 短路运算符
    || :找真,找到就返回,如果所有都是假,则返回最后一个
    &&:找假,找到假就返会这个假值,否则。则返回最后一位
 console.log(1 && 2 && 0)//0
    function show(a, b) {
        a = a || 0
    }
  • ES6
 function show(a=0,b=0){console.log(a+b}

16、函数重载

js函数没有函数重载,同名函数会被覆盖。但是可以通过arguments来实现

17、作用域

  • 全局作用域 script标签的第一级 全局变量
  • 局部作用域(函数作用域):只在函数内部或子级

  • js没有块级作用域

18、函数注释

函数可以被当作参数(回调函数),或者被当作函数的返回值(闭包)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值