js基础

js组成部分

ECMAScript 基础语法 js基础阶段

DOM 文档对象模型 api阶段 通过js的方式来修改页面上的所有内容活者是css属性

BOM 浏览器对象模型 api阶段 跟浏览器功能相关的内容,比如说 回退刷新等等

数据类型

简单数据类型和复杂数据类型

简单数据类型 5种 ----6种 es6语法
1、数字型 number

NaN 非数字但是他是数字类型

2、字符串类型string

凡事被引号包起来的内容都是字符串

“444”   
‘4444’

在html页面结构中,尽量使用双引

在js的代码里面尽量使用单引

console.log('<a href="#">百度</a>')
console.log("<a href='#'>谷歌</a>")
字符串的长度
var str = '今天天气真正好,应该出去浪。';
str.length

字符串+号的作用

数值相加,字符相连

// 数值相加,字符相连
 // 凡事+号两边存在字符串的就是拼接,加号两边都是数值类型的就是计算
 console.log('1'+1+1) //111  "11"+1   '111'
 console.log(1+'1'+1) //111  "11"+1   '111'
console.log(1+1+'1') //111   2+'1'    21
3、布尔类型
真 true    1

假 false    0
4、undefined
未定义
5、null

检测数据类型

console.log(typeof 18)

console.log(typeof false)

运算符
算数元算符

+-*/ %
前置加加和后置加加

i++  ++i  是一样的效果

i++  后置  先运算再自加

++i  前置  先自加再运算

比较运算符

= 赋值
== 等于  !=
=== 全等  !==

逻辑运算符

逻辑与&&   双真才为真,有一个假就为假
逻辑或||     双假才为假,有一个真就为真
逻辑非!  取反

短路运算

&&  表达式1为真,返回表达式2     表达式1为假,返回表达式1       
||      表达式1为真,返回表达式1     表达式1为假,返回表达式2 
		(与找假,或找真)

优先级

1.小括号
2.一元运算符
3.算术运算符
4.关系运算符
5.相等运算符 == ===
6.逻辑运算符 先&&后||
7.赋值 =
流程控制

1.顺序流程控制 从上往下,一步一步向下执行

2.分支判断流程控制

3.循环流程控制

判断 if
if(条件表达式){
条件成功执行
}
else{
条件失败执行
}

() 判断条件
{} 执行语句、执行代码
for循环
for(初始值;条件表达式;操作表达式){
	循环的具体内容
}
for(var i=1;i<=100;++i){
	console.log(循环的具体内容)
}
while
初始值
while(条件){
循环执行的代码
操作表达式
}

while 和for循环之间的区别

while 适合更加复杂的判断条件。(指定某一个值) 可以适用于不知道需要循环多少次的循环 for 更适合计数器的循环 跟数字挂钩的
有明确的执行次数

do while
do{
   执行代码
}while(判断条件)
至少会执行一次(特点)
跳出循环

continue 跳出当次循环,继续剩下的循环

break 跳出当前这一层循环for、switch。继续下一层循环

数组

数组用于存放一组有序的数据

下标/索引。是从0开始

获取数组里面的值,是从0开始。

数组的长度是arr.length

数组的下标最大 arr.length-1

函数

封装了大量的,方便我们调用

1、声明
function 函数名(){
	重复的代码
}
2、使用
函数名()
注意:函数不调用,函数体是不会执行的
函数的参数

参数的作用,就是让重复的代码更加灵活

实参 实际参数

形参 形式参数

形参和实参的个数问题

最好是一一匹配

如果实参大于了形参,对函数本身没有任何问题,多的参数,只是没有变量来接收

如果形参大于实参,对函数本身是有问题,没有被传递的实参变量是undefined。

return 返回的意思

1.把函数处理完毕之后的值返回给函数调用者(如果存在return 返回的是return后面的值,如果不存在return 返回的就是undefined)

2.阻断代码的运行

3.只能返回一个值 ,这个值可以是任意类型

arguments

函数内置的一个。接收实参的一个集合

伪数组 arguments 遍历 length arugments[0]

真数组 var arr = [] 不具备数组自带的一些函数、方法

看上去是一样的。

函数声明的两种方式
第一种方法
function 函数名(){}
函数名()

第二种方法
var fn = function (){}  //匿名函数
fn()
作用域

全局作用域

局部、函数作用域

作用 减少了命名的冲突、提高了代码的可靠性

变量
全局变量
  • 在全局声明的变量
  • 在函数内没有使用var 声明的变量
局部变量
  • 在函数内部声明的变量
  • 函数内部的形参
使用范围

局部变量只能在函数内部执行

全局变量可以在任何位置使用

生命周期(垃圾回收机制)

局部变量 函数使用的时候出生,函数执行完毕之后死亡

全局变量 浏览器打开的时候出生 关闭浏览器的时候死亡,在任何地方都可以使用全局变量

作用域链(向外的就近原则)

函数内部的变量,想要访问外部的变量值的时候,采取的是链式的方式获取,作用域链

预解析

提升var 、function 关键 提升到当前作用域的最前面

var 提升变量名,但不赋值

function 提升整个函数体,但不调用

对象

1.利用对象字面量创建对象
2.new Obj创建对象
3.构造函数创建对象
命名

变量 基本等于 属性

函数 基本等于 方法

单独存在的叫变量 存在对象中叫属性

单独存在的叫函数 存在对象中的叫方法

内置对象

js和浏览器提供。

数学

Math.max()  最大值
Math.min()  最小值
Math.pi     圆周率
Math.abs()  绝对值
Math.floor()  地板  向下取整  往最小取值
Math.ceil()  天花板  香上取整  往最大取
Math.round()  四舍五入  其它数字都是四舍五入,但是.5特殊,他往大了取
Math.random()  随机数   获取的是[0-1)之间的一个小数,不包括1     0 =< x < 1  

function  getRandom(min, max){
            return Math.floor(Math.random() * (max - min + 1)) + min;
        }
日期对象
Date 构造函数方式调用
var now = new Date()
可以不输入参数,获取的是当前时间
可以输入参数,获取的是设置的时间
var time = new Date(2020,11,11,11,11,11)
var time = new Date('2020-11-11 11:11:11')
后面我们会具体再讲这个时间错误的问题,因为他默认从0开始
获取时分秒等
var now = new Date(1995, 11, 17, 3, 24, 0);
var year = now.getFullYear();  //年
var month = now.getMonth(); //月0-11
var dates = now.getDate() //日期
now.getDay() //星期 0-6   0星期日

var hour = now.getHours();//时
var minutes = now.getMinutes();//分
var seconds = now.getSeconds();//秒
时间戳
var date = new Date()
date.valueOf();
date.getTime();

h5方法更加简便
+new Date()
Date.now()
倒计时效果
将来时间-当前时间 = 毫秒/1000     秒
已用时间
现在时间-以前时间 = 毫秒/1000     秒
数组
push()  添加数据元素        在数组末尾添加一个或多个元素,返回值是新数组的长度
unshift 添加数据元素        在数组前面添加一个或多个元素,返回值是新数组的长度
pop()   删除数据元素        在数组末尾删除一个元素,返回值是删除的元素
shift()  删除数据元素       在数组前面删除一个元素,返回值是删除的元素 
数组排序
arr.reverse()     翻转数组

高阶函数----把某一个函数当作一个参数传入
arr.sort(function(a,b)){          冒泡排序        
	a - b;    升序
	b - a;    降序
}       
反转数组
arr.reverse()
排序
高阶函数----把某一个函数当作一个参数参入
arr.sort(function(a,b){
	return a-b 升序
	return b-a 降序
})
获取索引
arr.indexOf()
// 获取索引号5 =》5    5=》'5'   5=》55 
// indexOf只能获取全等的值
console.log(arr.indexOf(5));
console.log(arr.lastIndexOf(5)); 
// 是从后面开始数,但是索引号依然是从前面开始0开始
数组转字符串
arr.toString()    默认只能把数组之间的符号够转为逗号
arr.join('---')   默认只能把数组之间的符号够转为逗号,你可以任意定义这个转移的符号
本包装类型

在使用简单数据类型的时候

基本包装类型就是能够让简单数据类型也能够使用方法

字符串
indexOf和lastIndexOf
str.indexOf('要查询的字符','从什么位置开始查询')
操作方式和数组的保持一致
获取索引对应的字符
str.charAt(索引)   拿到str对应的字符
str[索引]
值传递和复制值

简单数据类型,相当于直接复制粘贴

字符串、数字、布尔、undefined、null

复杂数据类型,相当于创建了一个快捷方式

对象、数组、函数

简单数据类型和复杂数据类型在内存中的位置

简单数据类型,存放在

复杂数据类型,存在在栈和堆

var obj = {

name:yijun

}

复杂数据类型,不能够直接复制!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值