JavaScript学习笔记1

1 什么是JavaScript

JavaScript是一门世界上最流行的脚本语言
一个合格的后端人员必须了解javascript
ECMAScript可以理解为JavaScript的一个标准
最新版本已经到了es6,但大部分浏览器还停留在支持es5代码上

2 快速入门

2.1 引入JavaScript

1 内部标签

<script>
//.....
</script>

2 外部引入
test.js

//

test.html

<script src='test.js'></script>

2.2 基本语法入门

JavaScript严格区分大小写

<script>
        var score=81
        if(score>=60 && score<70)
            alert("及格");
        else if(score>=70 && score<80)
            alert("良好");
        else if(score>=80&&score<90)
            alert("较好");
        else if(score>=90 && score<=100)
            alert("优秀");
    </script>

2.3 数据类型

数值,文本,图形,音频,视频
number
javascript不区分小数和整数
NaN 不是数字
infinity 无限大

字符串
‘asd’,“asd”
布尔值
true false
逻辑运算符
&& || !
比较运算符
== 类型不一样,值一样会判断为true
=== 绝对等于(类型一样,值一样,结果为true)
这是一个js的缺陷,尽量避免使用==比较符
NaN与所有数值都不相等,包括自己
只能通过isNaN()来判断这个数是否为NaN
尽量避免使用浮点数进行计算,存在精度问题

Math.abs(1/3-(1-2/3))<0.00000001

null和undefined
null 空
undefined 未定义
数组
java中的数组必须是类型相同的数据,js中则不需要
var arr=[1,2,3,null,true]
new Array(1,2,3,null,false)
取数组下标越界会undefined
对象
对象使用大括号,数组使用中括号
两个属性之间使用大括号隔开

var person={
            name:"小明",
            sex:"男"
            hobby:["打篮球","看书"]
        }

取对象的值
person.name
person.sex

2.4 严格检查模式

use strict 严格模式,es6新特性
严格检查模式,预防javascript的随意性导致产生的一些问题,必须写在javascript的第一行,局部变量建议使用let定义

<script>
'use strict';
let i=1;
</script>

3 数据类型

3.1 字符串

1 正常字符串我们使用双引号或单引号包裹
2 注意转义字符

\n
\t
3 多行字符串编写
var msg=
`hello
msg
msg1
4 模板字符串
let name=‘小明’;
let sex=‘男’;
let msg=你好,{name}
5 字符串长度
str.length
6 字符串不可变
7 大小写转换(方法)
student.toUpperCase()
student.toLowerCase()
8 student.indexOf(‘t’)
9 substring
student.substring(1) 从第一个字符串截取到最后一个字符串
student.substring(1,3) [1,3)

3.2 数组

Array可以包含任意的数据类型
var arr=[1,2,3,“a”,null]
1、长度
arr.length
给arr.length赋值,数组大小会发生变化,如果赋值过小,元素就会丢失
2、indexOf
arr.indexOf(3)
通过元素获得下标索引
3、slice() 截取array的一部分,返回一个新数组,类似于String的substring
4、push()将元素压入尾部,pop()将元素弹出尾部
5、unshift()将元素压入头部,shift()弹出头部一个元素
6、排序sort()
arr.sort()
7、元素反转reverse()
arr.reverse()
8、concat
arr.concat(4,5,6)
concat()并没有修改数组,只是会返回一个新的数组
9、连接符join
打印拼接数组,使用特定字符连接
arr.join(’-’)
1-2-3-a-null
10、多维数组
arr=[[1,2],[3,4],[5,6]]
数组:存储数据

3.3 对象

对象中包含若干键值对

var person={
            name:"小明",
            sex:"男"
            hobby:["打篮球","看书"]
        }

1、对象赋值
person.name=“小红“
2 使用一个不存在的对象属性不会报错,undefined
3、动态的删减属性,通过delete删除对象属性
delete person.name
4、动态的添加,直接给新的属性添加值即可
person.test=’'123”
5、判断属性值是否在这个对象中
name in person
判断一个属性是否是这个对象自身的属性
person.hasOwnProperty(“name”)

3.4 流程控制

if 判断

var score=81
        if(score>=60 && score<70)
            alert("及格");
        else if(score>=70 && score<80)
            alert("良好");
        else if(score>=80&&score<90)
            alert("较好");
        else if(score>=90 && score<=100)
            alert("优秀");

while循环、for循环
forEach循环

var age=[20,23,42,45,31]
        age.forEach(function (value) {
            console.log(value)
        })

for …in

for( var num in age){

}

3.5 Map和Set

var map=new Map([["tom",91],["jery","81"],["mary","77"]]);
       var score=map.get("tom");
       map.set("tom",88);

Set:无序不重复集合
set.add(2);
set.delete(1);
set.has(3)

3.6 iterator

遍历数组

var arr=[3,4,5]
for(var x of arr)
{
}

遍历map

var map=new new Map([["tom",91],["jery","81"],["mary","77"]]);
for(let x of  map)
{
}

遍历set

var set=new Set([2,3,4]);
for(let x of set)
{
}

4 函数

4.1 定义函数

绝对值函数

funtion abs(x)
{
     if(x>=0)
        return x;
     else{
         return -x;
     }
}

一旦执行到return代表函数结束,返回结果
如果没有执行return,函数执行完也会返回结果undefined
定义方式二

var abs=function(x){
       if(x>=0)
        return x;
     else{
         return -x;
     }
}

funtion(x){}是一个匿名函数,但是可以把结果赋给abs,通过abs调用函数
方式二和方式一等价
调用函数
abs(10)
参数问题:javascript可以传任意个参数,也可以不传递参数
假设不存在参数如何规避

var abs=function(x){
    if(x!=='number')
       throw 'Not a Number';
       if(x>=0)
        return x;
     else{
         return -x;
     }
}

arguments代表传递进来的所有参数,是一个数组

var abs=function(x){
    for(let x of arguments)
    {
    }
    if(x!=='number')
       throw 'Not a Number';
       if(x>=0)
        return x;
     else{
         return -x;
     }
}

rest,es6新特性,获取除了已定义的参数之外的所有参数

function abs(x,...rest) {
             if (x !== 'number')
                 throw 'Not a Number';
             if (x >= 0)
                 return x;
             else {
                 return -x;
             }
}

rest参数只能写在最后面,必须用…标识

4.2 变量中的作用域

在JavaScript中,var 定义的变量是有作用域的
假设在函数体中声明则在函数体外不能使用
如果两个函数使用相同的变量名,只要在函数内部就不冲突
在JavaScript中函数查找变量从自身函数开始查找,由内向外,假设外部存在同名的函数变量,则内部函数会屏蔽外部的函数变量
提升变量的作用域

function f() {
             var x="x"+y;
             console(x);
             var y='y';
        }

结果:xundefined
说明js执行引擎,自动提高了y的声明,但不会提升y的赋值,所有的变量声明放在函数头部,便于代码维护
全局对象window
alert()函数本身也是一个windows变量
JavaScript实际上是一个全局作用域,任何变量(函数也可以被视为变量),假设在函数作用范围内没有找到就会向外查找,如果在全局作用域都没有找到就会报错
规范
由于我们所有的全局变量都会绑定到windows上,因此容易造成命名冲突,把自己的代码全部放到自己定义的唯一命名空间中,降低全局命名空间问题

//唯一全局变量
var test={};
//定义全局变量
test.name="小明”;
test.add=function(a,b)
{
    return a+b;
};

局部作用域let
es6 let关键字解决局部作用域命名冲突问题;
let 声明的变量只在 let 命令所在的代码块内有效。,var 是在全局范围内有效:let 只能声明一次 var 可以声明多次:建议使用let去定义局部作用域的变量
常量const
在es6之前,用全部大写字母命名的变量就是常量,建议不要修改这样的值,但其值仍然可以被修改
es6中引入了常量关键字const,该值不能被修改
const PI=3.14
call()、apply()、bind() 都是用来重定义 this 这个对象的!
call 、bind 、 apply 这三个函数的第一个参数都是 this 的指向对象,第二个参数差别就来了:
call 的参数是直接放进去的,第二第三第 n 个参数全都用逗号分隔,直接放到后面 obj.myFun.call(db,‘成都’, … ,‘string’ )。
apply 的所有参数都必须放在一个数组里面传进去 obj.myFun.apply(db,[‘成都’, …, ‘string’ ])。
bind 除了返回是函数以外,它 的参数和 call 一样。

5 内部对象

标准对象
number
string
boolean
object

5.1 Date

var now=new Data();
        now.getFullYear();//年
        now.getMonth();//月 0~11
        now.getDate();//日
        now.getDay();//星期几
        now.getHours();//时
        now.getMinutes();//分
        now.getSeconds();//秒
        now.getTime();//时间戳

5.2 JSON

json是什么?
早期所有数据传输习惯使用xml文件
JSON(JavaScript Object notation,JS对象简谱)是一种轻量级的数据交换格式
简洁和清晰的结构层次使得JSON成为理想的数据交换语言
易于人阅读和理解,同时也易于机器解析和生成,并有效的提升网络传输速率
在JavaScript中一切皆为对象,任何js支持的类型都可以用json表示
格式
对象都用{}
数组盗用[]
所有的键值对都用key:value
JSON字符串和js对象的转化

var user={
            name:"小明",
            sex:"男"
        };
        //将对象转化为json字符串{ "name":"小明","sex":"男"};
        var jsonUser=JSON.stringify(user);
        //将json字符串转化为js对象
        var obj=JSON.parse({ "name":"小明","sex":"男"});

5.3 Ajax

原生的js写法,异步请求
JQuery封装好的方法 $("#name").ajax("")
axios请求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值