js基础

js初体验

  • 轻量级脚本编程语言
  • js作用:与用户交流互动 简称交互

js引入方式

  • 内嵌式:demo学习阶段
  • 外链式:工作使用
  • 行内:一般不用

js注释

// ctrl+/ 单行注释 ,一般做简单的说明 说明;

/* ctrl+shift+/  多行注释
可以回车
写很多的注释
函数、功能:介绍用多行注释;
*/

js输入输出

//输入信息(带有引导信息) 小括号内用单引号或双引号,只能用一种
prompt("请输入***");

//输出
alert("这是个弹窗");//警告,不点击后面的代码不会执行
console.log("控制台输出");//调试用  控制台输出
	//可以输出字符串和数字
	//可以多个输出,用,隔开
document.write("<h1>HTML</h1>");//在HTML页面输出  可识别html标签

js变量

定义变量

  • var a=10;

  • 语法规则:关键字 var 变量名

  • =:赋值运算符,规则:把右侧的值存入左侧的变量里

命名

  • 范围:字母、数字、下划线、$符号,不能数字开头;
  • 不能使用关键字和保留字;
  • 市场上一般用驼峰命名法(第二个单词开头大写);
    • userName
  • 根据公司需要,变量用英文

js数据类型

5种数据类型

  • number 数字
    • 阿拉伯数字
    • NaN 不是某个数,泛指,不确定
  • string 字符串
    • 规则:只要两边有单双引号的一种,这个就是String 类型,就是个字符串;
    • 转译字符:把“ 转译为 \“
  • boolean 布尔值
    • true
    • false
  • Null
  • Undefined
  • object 复杂数据类型 对象
  • function 复杂数据类型 函数
    • var a; JS 会给默认值;undefined

检查数据类型

var a=10;
var aType = typeof(a);
// var aType = typeof a;
typeof typeof 1;// 结果为string
typeof object//function 构造函数
typeof object()//object

转换数据类型

  • 转换为number
    • number()
    • parseInt() 整数
      • 只能传入数字部分在前的字符串,否则为NaN
    • parseFloat() 浮点数
      • 只能传入数字部分在前的字符串,否则为NaN
  • 转换为字符串类型
    • 方法内部相当于给你要转的这个数据左右两边加单双引号;
    • string()
    • .tostring()
      • null和undefined不能使用 报错
  • 转换为布尔类型
    • Boolean()
      • 转false情况
        • 空字符串:“”
        • 数字:0、NaN;
        • null、undefined
        • false

操作符

算术操作符

  • 常规需要number类型进行运算
  • 规则:字符串遇见+使临近的其他类型 隐式转化为字符串 进行拼接(隐式转化:我们看不到的转化 但转化已经发生)
  • -*/%计算中 有一个是数字类型 非数字类型的隐式转换为数字类型 隐式转换默认为number();
  • 操作符
    • ±*/
    • %求余
    • ++自增
      • 规则:如果遇见++写在a的后面,先把自己的数推到位置上,在进行a++运算(运算后结果不推到位置上)++a 先自增 后运算
      • 规则:如果遇见++写在a前面,++a先算,计算后的结果,再往位置上提供数据;a++ 先运算 后自增
    • –自减

比较运算符

  • 常规:两边都需要是number类型
  • 操作符
    • < > >= <=
  • 非常规操作:规则:非Number类型要和Number类型比较的话,非Number类型就要隐式转换为Number类型
  • ==
    • 如果两边的数据类型不同,非Number类型转Number类型,看值是否相同;
    • 如果两边的数据类型相同,看值是否相等;
  • === (严格,没有隐式转化)
    • 直接先看数据类型,如果数据类型不同,直接返回false;
    • 如果两边的数据类型相同,看值是否相等;

逻辑运算符

  • && 且 全部满足
    • 两个条件返回布尔值 true或者false 都满足则返回最后成立的结果 一个不成立 后续不执行 直接返回不成立的结果
  • || 或
    • 只要满足一个条件即可 返回:满足条件的结果 隐式转换为布尔值 但只进行比较 不进行返回 两个都满足 则返回最后一个
  • ! 取反
    • !a

赋值运算符

  • = 赋值 把右边的值赋值给左边的变量
  • = %= *= /= += 简写

操作符优先级

  • 第一优先级()
  • 第二优先级 ++ – !
  • 第三优先级 * / %
  • 第四优先级 + -
  • 第五优先级 > >= < <=
  • 第六优先级 == != === !==
  • 第七优先级 &&
  • 第八优先级 ||
  • 第九优先级 = += -+ *= /= %=

流程控制-三个名词

  • 表达式:有返回结果
    • 在浏览器console后台可以直接敲JS ,回车返回的就是该表达式的结果;
  • 语句:升级版表达式
  • 结构:
    • 分支:不同的情况,走不同的分支;
    • 循环:重复 有规律的变化;

分支

if else

  • 作用:不同情况,走不同的分支;
  • 特点:一组分支,只要进入其中一个分支,其他分支都不会执行
  • ():条件表达式,有个结果返回,if分支需要Boolean值,(返回的不是Boolean值,隐式转化)
  • 返回的是true 执行{ js代码 };返回false,不执行
  • 多个分支情况,叫一组分支,只会执行一个分支;
  • 两组分支:每组都会去过一次(每组的条件表达式进行判断);
  • 每个if else都相当于一个局部作用域

switch-case

  • 场景:变量与多个固定值进行===比较判断

  • 注意:(非常规操作) case里面的break不是必须的,但是如果没有break,会继续往下执行,直到遇到下一个break;

  • :不能省略

  • break当前情况的结束

  • defaule 所有情况都不满足时,执行default

    // switch (key) {
    //   case value:
    //     // JS代码;
    //     break;
    
    //   default:
    //     break;
    // }
    

三元表达式

if else 简写,有返回值

  • 表达式1 ? 表达式2 : 表达式3;(三元表达式可以相互嵌套,如表达式2可以嵌套三元表达式)
  • 如果表达式1 执行结果为true。执行表达式2,把表达式2的结果作为整个三元表达式的结果进行返回;
  • max = a > b ? a : b;

顺序

循环

while

  • 作用:有规律的变化,循环:重复;

  • (condition):条件表达式,返回Boolean值;不是个Boolean值,隐式转化为Boolean;

  • 特点:条件表达式返回一直true,循环体每次到要执行;死循环;

  • 语法:

    while (1 == 1) {
    //循环体;
    alert(“这是个病毒”);
    }

for循环

  • ():三个表达式;

  • 先执行 初始化表达式 var num = 1; 在整个循环里面,只执行一次;

  • 进入 条件表达式: num<=100;

  • 返回true ,执行循环体; 返回fasle ,终止循环;

  • 执行完循环体以后,才执行自增表达式: num++;

  • 语法:

    for (var num = 1; num <= 3; num++) {
    // 循环体
    console.log(num);
    }

do while

  • 条件表达式:位置上需要一个Boolean值,若不是Boolean,会隐式转化;

  • 至少会执行一次;

  • 语法:

    do {
    // 循环体
    alert(1)
    } while (false);

  • while、do-while 循环不易看出循环的次数,一般用于未知次数的循环

  • for循环明显看出循环的次数,一般用于已知次数的循环;使用最多是for;

  • 执行特点:

    • while、for循环可能一次循环都不会执行
    • do-while 循环至少执行一次;

break

  • 终止 当前 for 整体;

continue

  • 作用:跳过 当次 循环,意味着写在 continue 本次后面的代码,都不会执行了;
  • continue:本次不用执行了,继续往下一次执行;

数组

  • 数据类型:有长度的数据集合;为了更好的管理数据;
  • 索引:位置,下标,从0开始,能够通过索引获取或设置数组中的数据
  • 声明:
    • 字面量声明:var arr=[];
    • 构造函数:var arr=new array();
  • 数组方法
    • arr.concat(); 数组拼接
    • 字符串.split(分隔符)

遍历数组

  • 数组的核心就是索引,有位置就能拿到数据
  • for循环遍历数组
  • 最大的索引比长度少1,因为索引是从0开始的

函数

  • 作用:复用(将重复出现的代码封装起来,在需要的地方进行调用)
  • 语法:
    • 声明:function 函数名 ( 形参 ) { }
    • 调用:函数名();

参数

  • 把不同的主角传入同一个故事
  • 定义:参数是函数内部的变量
  • 内部的变量,参数,只能在函数内部使用
  • 形参:内部定义的变量,只能在内部使用,和外面没有关系,外面的数据需要给内部加工,就配置形参
  • 实参:外部调用函数的时候,传入的真实数据
  • 形参与实参互不影响

arguments

  • 参数个数不确定
  • js内置的变量,不需要声明,也不需要写在小括号内
  • 内部变量,只能在函数内部使用
  • arguments把参数都传入值,生成一个伪数组
  • 伪数组:和数组很像,但不是数组,有下标,有长度,可遍历

返回值

  • 作用:把内部运算的结果,给外面
  • 如果函数里面加工完的结果,外面需要,函数内部设置返回值 return 数据;
  • 外面需要找个变量接收
  • 函数内部出现return,return下面的代码不执行
  • return后面没有任何数据或者变量,默认返回undefined
  • 没有return,函数没有返回值,执行函数,默认返回undefined

函数表达式

函数表达式

  • 函数表达式是另外一种声明的方式
  • 语法:
    • var fn=funvtion () {}

匿名函数

  • 函数没有名字
  • 不能单独使用
  • 使用情况
    • 函数表达式
    • 自调用(自执行)函数

回调函数

  • 传入的是函数,这个被传入的函数(参数)就叫做回调函数

  • 语法

    function fn(a) {
    a();
    }

    function demo() {
      console.log("我是demo内的代码");
    }
    
    fn(demo);
    

作用域

  • 作用域:变量、函数生效的范围
  • 全局作用域:在script里声明的变量,可以在任何位置使用,包括局部作用域
  • 局部作用域:函数内部声明的变量,只能在函数内部,外面不能访问
    • 规则:只能在函数内部使用

预解析

  • 预解析,也叫变量提升,会把声明的变量和函数提升到当前作用域的最顶端,不执行,只是预解析,全部解析完毕,执行代码
  • 注意:当前作用域是全局还是局部

作用域链

  • 局部变量的寻找
    • 规则:现在当前自己的作用域中找有没有声明的变量,如果没有往上层作用域找,如果上层作用域也没有该变量,报错

对象

声明

  • JS:万物皆对象;

  • 对象:属性和方法的集合体;

  • 语法:

    // 1.字面量
    var obj = {};
    console.log(obj);

    // 2.构造函数
    var obj_1 = new Object();
    console.log(obj_1);
    

添加属性

  • 点方式添加:
    • 形式:对象.属性名 = 属性值
      • obj.name = “狗蛋”;
    • 形式:对象.方法名 = 匿名函数;
      • obj.say = function() {);
  • 初始化是添加
    • 格式:名字:属性值 或者 匿名函数;
      • var obj = {
        name: “zhangsan”}
    • 注意:每组后面必须有逗号,最后一组可以不加;
  • 键值对
    • 键:属性名或者方法名;
    • 值:属性值或匿名函数;
    • 格式:
      • obj[“name”] = “狗蛋”;
        • 属性名和方法名 必须是字符串
      • obj[a] = “狗蛋”
        • a为变量

获取及遍历属性

获取

  • 点方式获取
    • obj.key
  • 键值对 [] 方式
    • obj[“a”]

调用

  • 调用方法
    • obj.key() 注意:考虑需不需要传入参数
  • 调用属性
    • obj.key

遍历

  • for in

  • key:代表每一次循环的 名字(属性名和方法名)

  • object: 遍历循环的对象 obj

  • 语法:

    for (var key in obj) {
    // obj.key 从obj上找叫key,返回是undefined;
    console.log(key, obj[key]);
    }

  • 简单类型与复杂类型

    • 内存上有两种空间,栈 堆; 只要var 变量,就要在栈上 开一个格子(栈空间)
    • 简单数据类型只能存入 栈上;
    • 复杂数据类型只能存入 堆上;

内置对象Date

  • 创建方法:var date=new Date();
    • 构造函数
  • date.getFullYear();年
  • date.getMonth();月(从0开始 需要+1)
  • date.getDate();日期
  • date.getDay();星期(从星期日到星期六)
  • date.getHours();
  • date.getMinutes();
  • date.getSeconds();
  • date.getMilliseconds( );
  • 时间戳
    • date.valueOf( );
    • date.getTime( );
    • 1*date;
    • Date.now( ); 多一毫秒
    • id 时间戳*随机数

比时间 比的是时间戳的大小 从1970年 1月1日开始计算

  • 字符串拼接
    • var time = n i a n − {nian}- nian{yue}-${ri} s h i : {shi}: shi:{fen}😒{miao}

内置对象Match

  • 不需要创建
  • Math.random() 随机数
  • Math.cfloor() 向下取整
  • Math.ceil() 向上取整
  • Math.round() 四舍五入
  • Math.abs( );
  • Math.max( ); /Math.min( );

案例 document.write(

)

  • 获取随机数 封装

Array

  • push 推
  • pop 删除(后面)
  • unshift 添加(前面)
  • shift 删除(前面)
  • splice( ) 对任何位置的增删除改
    • 删除:两个参数 第一个参数表示删除的开始索引 第二个参数表示需要删除的个数
    • 添加: 前面两个参数 一个表示开始索引 第二个表示需要删除的个数 后面的是添加的数组项 (除了0是从前面开始 其它都从后面加)
  • join(数组变成字符串) / split(字符串变成数组)
  • slice (截取) / concat (拼接)
  • for eash 自调用函数 item index arrr
  • filter 过滤
  • indexOf 找字符串的位置 返回索引
  • findindex 找符合条件的第一个字符串的 返回该字符串的索引

Object

  • 循环 for in

String

  • 不可变性 不可删除 游离
  • split / join
  • indexOf / lastIndexOf
  • charAt( ) 指位置的字符串
  • charCodeAt 获取指定字符的索引
  • concat
  • substring
  • slice 同上
  • substr
    // 这个方法用于获取字符串中的部分字符
    var str = ‘我爱中华人民共和国’;
    var res = str.substr(2,2);// 索引2开始,总共获取2个字符,第二个参数为个数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值