JS基础

**

变量

**
什么是变量?
变量是用来存储数据的 关键字是var 是在内存中 开辟一个区间 来存储数据

如何用:
1.声明变量
var 变量名
2.给变量赋值
变量名 = 值;
3.调用
之间用变量名 ; 但是直接用变量名是看不到的 我们需要借助 日志输出
4.输出方式 :

console.log();
alert();
prompt() 输入框

变量名的命名规则和规范
。由数字、字母、下划线、$构成
。不能用数字开头
。严格区分大小写
。不能用关键字和保留字段
。遵循驼峰命名法
。要有语义

操作符
算数运算符

      • / % 先乘除后加减 如果有括号 先算小括号里面的
        比较运算符

< >= <= == ===
==:只比较内容
===:既比较内容又比较类型
逻辑运算符
&& || !
&& :
&&: and的意思, 操作符两边都是true,才会返回true,只要有一边为false,那么返回的就是false

     逻辑中断:从左至右依次执行,如果当前表达式是true的话,继续往右执行,直到碰到表达式是false,那么就直接返回表达式的值

|| : or 的意思,操作符两边只要有一边是true,那么就返回true,如果两边都是false,才返回的是false

     逻辑中断:从左至右依次执行,如果当前表达式是false的话,继续往右执行,知道碰到表达式是true,那么就返回该表达式的值

!:取反的意思

	 	赋值运算符
	 	var num = 10;

num +=5; // == num = num + 5;

前置运算符和后置运算符

前置++: 先自身加1,然后把值返回

后置++:先返回值,然后再自身加1

运算符的优先级

  • 小括号
  • 一元运算符
  • 算术运算符
  • 关系运算符
  • 比较运算符
  • 逻辑运算符
  • 赋值运算符

流程控制

顺序流程

代码从上至下,依次执行

分支流程

一个分叉路口

if语句

语法:

if(条件表达式){
    代码1
}else{
    代码2
}

如果条件表达式为true,那么执行代码1,如果是false,那么执行代码2

多分支语法:

if(条件表达式){
    
}else if(条件表达式){
    
}else if(条件表达式){
    
}...

else{
    
}

从上至下依次去判断条件表达式是否成立,如果其中一个成立,会进入相应的执行语句,当代码执行完,不会再进入后面的分支

switch语句

语法

switch(value){
    case value1:
     break;
    case value2:
     break;
     ...
     default:
      break;
}

直接跳到与传递进来value值相等的这一个分支

循环流程

不停的执行一些代码

for循环

语法:

for(初始化变量; 条件表达式; 操作表达式){
    //循环体
}

执行过程

  • 1.执行初始化变量
  • 2.执行条件表达式,如果成立,进入循环体,如果不成立,跳出循环
  • 3.执行循环体里面的代码
  • 4.执行 操作表达式
  • 2 3 4 重复执行

双重for循环

for(初始化变量; 条件表达式; 操作表达式){
    for(初始化变量; 条件表达式; 操作表达式){
    //循环体
	}
}

外层循环执行一次,内层循环执行所有次数

while循环

语法:

while(条件表达式){
    //循环体
}

只有当条件表达式成立的时候,才会进入循环体,循环体执行完了,又会跳到条件表达式这里进行判断

do…while循环

语法:

do{
    
}while(条件表达式);

先执行do里面的循环体,然后再判断条件是否成立,如果成立,继续执行循环体,如果不成立,跳出循环

continue break return

continue: 跳出本次循环,循环还会继续,那么continue后面的代码不会执行

break: 跳出整个循环,循环不再继续,那么break后面的代码不会执行

return: 跳出循环,中止函数的执行,return后面跟什么就返回什么,如果return后面不跟东西,返回式 undefined

数据类型

简单数据类型

number 数值类型

整数 int

浮点数 float

如何把其他类型转成number

 parseInt(‘60px’);//直接取整,后面的小数不要    60
 parseFloat('60.2px');// 获取小数  60.2
 //如果说数值后面带了非数字类型的,会把数值返回,非数值的过滤掉

string 字符串

被引号引起来的,都是字符串

字符串如何拼接 用 + 号

如何把其他类型转成string

var num = 5;
num + '';

boolean 布尔类型

true,false

隐式转换,只要是要条件表达式的地方,都会默认做一个隐式转换

只有5种情况转成false

  • 0
  • ‘’
  • NaN
  • null
  • undefined

undefined 未定义

null 空对象

复杂数据类型

函数

函数是用来封装一定功能的代码块,可以重复来调用

语法:

//命名函数
function fn(){
    
}
//函数声明了不会自己执行里面代码,必须要调用
fn();

//匿名函数
var fn = function(){
    
}
fn();

参数

形参:写在函数的声明上面,相当于一个变量来占位

实参:写在函数的调用上面,是实实在在的值

返回值 return

arguments

是伪数组,是实参的集合,使用方法跟数组是一样的

自定义对象

对象是什么

指的是一类具体的事物

对象的初始化

//字面量的方式
var obj = {
    name: 'zs',
    age: 18,
    play: function(){
        
    }
}
//new Object 
var obj = new Object();
obj.name = 'zs';
obj.age = 18;
obj.play= function(){
    
}
//构造函数
function Person(name,age){
    this.name = name;
    this.age = age;
    this.play = function(){
        
    }
}
//需要去实例化对象  就是new对象
var obj = new Person('zs',18);

//如何去使用属性或者调用方法呢
obj.name;//取属性值
obj.play();//调用方法

对象的遍历 for in

//构造函数
function Person(name,age){
    this.name = name;
    this.age = age;
    this.play = function(){
        
    }
}
//需要去实例化对象  就是new对象
var obj = new Person('zs',18);

for(var key in obj){
    //key 就是对象里面的属性名
    obj[key]; //才能拿到属性值
}

内置对象

Math 算术对象

只要是做算术相关的,就找Math

Math.max(); //获取最大值
Math.min(); //获取最小值
Math.abs(); //绝对值
Math.floor(); //向下取整
Math.ceil();//向上取整
Math.round(); //四舍五入
Math.random(); //随机数  [0,1) 能娶到0,取不到1

Date 日期对象

只要是做日期相关的操作,找Date

var date = new Date();//获取的是当前时间
//需要做格式化
date.getFullYear();// 获取年份
date.getMonth(); //获取月份  0 ~ 11
date.getDate(); //获取日
date.getDay(); //获取星期
date.getHours(); //获取小时
date.getMinutes(); //获取分钟
date.getSeconds(); //获取秒 

//获取毫秒的方法
date.valueOf();
date.getTime();
var date = +new Date();
Date.now();

Array 数组

数组 就是用来存放一组数据的

数组的声明方式

var arr = [];
var arr = new Array();

数组的方法

arr.push(); //追加元素
arr.pop(); //删除最后一个元素
arr.unshift(); //在第一个位置添加元素
arr.shift(); // 删除第一个元素
arr.indexOf();// 检测数组里面是否有这个元素
arr.length; //数组的长度
arr.reverse(); //翻转数组
arr.sort(); //排序 
arr.join();//转换成字符串

遍历

就是把数组里面的元素一个一个拿出来,要配合for循环来使用

String 字符串

var str = '';
str.substr(startIndex,length); //截取字符串
str.replace(要被替换的字符,替换的字符); //替换
str.split(需要切割的符号); //切割  返回值是一个数组
str.charAt(); //根据索引返回对应的字符
str.indexOf(); //根据字符检测对应的索引
str.length;  //字符串的长度

typeof 检测简单数据类型

instanceof 用来检测复杂数据类型

作用域相关概念

作用域: 变量的作用范围

全局作用域: 整个页面,声明的变量是全局变量,整个页面都可以用

局部作用域:作用函数内部,声明的变量是局部变量,只能用于函数的内部

作用域链: 就是查询变量的规则,就近原则,先看本作用域中是否有,如果有,直接使用,如果没有,往上一层去找

预解析

执行js的时候分两步,先进行预解析,然后再执行代码

特点:

  1. 会把变量的声明提升, var 提升,不包含赋值
  2. 会把函数的生命提升,function 提升,不包含调用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值