js基础复习点
| 1.变量 | |
| var num=10; | |
| var num1,num2,num3; | |
| num1=10; | |
| num2=20; | |
| num3=30; | |
| var num1=10,num2=20,num3=30; | |
| 注意点: | |
| console.log(a); //报错 | |
| var b; | |
| console.log(b); //undefined | |
| c=10; | |
| console.log(c); //10 会默认为全局变量,正常输出,不推荐这种写法 | |
| 2.数据类型 | |
| var num=10; //数值类型 | |
| var str='123'; //字符串类型 | |
| var flag=true; //布尔类型 | |
| var obj = {} //对象类型,默认值null | |
| var undefined = undefined; //未定义类型 | |
| 数据类型的转换: | |
| 转换成字符串类型: | |
| str.toString() //大部分类型都有toString()方法 | |
| String(str) //undefined,null等特殊值,需要用到String() | |
| 转换成数值类型: | |
| parseInt() 123.123abc // 123 | |
| parseFloat() 123.123abc //123.123 | |
| Number() 123.123abc //报错 | |
| 转换成布尔类型: | |
| Boolean() | |
| 转换为false的五种情况: 0 '' null undefined NaN | |
| 其他的值都转换为true: 非0和非空都为true | |
| 隐式转换: | |
| 任意类型+ 字符串 会转换为字符串 | |
| 任意的类型 - * / 会转换为数值 | |
| 特殊情况: | |
| NaN : 不是一个数字 | |
| isNaN(); 不是人 | |
| 数据类型检测: | |
| typeof str | |
| 3.条件判断 | |
| 单向判断 | |
| if(条件满足){ | |
| //执行语句 | |
| } | |
| 双向判断 | |
| if(条件满足){ | |
| //执行语句 | |
| }else{ | |
| //条件不满足执行 | |
| } | |
| 多向判断 | |
| if(条件1满足){ | |
| //执行语句1 | |
| }else if(条件2满足){ | |
| //执行语句2 | |
| }else if(条件3满足){ | |
| //执行语句3 | |
| }else{ | |
| //以上都不满足,执行这里 | |
| } | |
| 精准判断 | |
| switch(条件){ | |
| case 条件1: | |
| 语句1; | |
| break; | |
| case 条件2: | |
| 语句2; | |
| break; | |
| default: | |
| 最后的语句; | |
| break; | |
| } | |
| 三元运算符 | |
| 条件 ? 条件满足返回 : 条件不满足返回 | |
| 总结: | |
| if和switch的区别? | |
| if适合用于确定范围的判断 | |
| switch适合用于确定的具体值判断 | |
| 2.switch的注意点 | |
| switch的条件比较是全等(===) | |
| break可以省略,但是会穿透执行. | |
| 4.循环 | |
| 循环都必须有三个条件: 开始条件,条件范围,条件增量 | |
| for循环 | |
| var sum=0; | |
| for(var i=1; i<=100; i++){ | |
| sum+=i; | |
| } | |
| while循环 | |
| var sum = 0; | |
| var i=1; | |
| while(i<=100){ | |
| sum+=i; | |
| i++; | |
| } | |
| do-while循环 | |
| var sum =0; | |
| var i=1; | |
| do{ | |
| sum+=i; | |
| i++; | |
| }while(i<=100) | |
| 总结: | |
| 1.三种循环之间的区别? | |
| for适用于循环次数确定的情况,while和do-while适用于循环次数未知的情况 | |
| while是先判断,再执行, do-while是先执行一次,再判断 | |
| 2.continue 和 break | |
| continue 跳过当前循环 | |
| break 跳出整个循环 | |
| 5.数组 | |
| var arr=[]; 数组的基本语法 | |
| var arr[1,2,3,4,5]; 数组可以存多个值,建议存同类型的值,但是可以存任意类型的值. | |
| arr.length 数组的长度 | |
| arr[0] 表示数组中的第一个元素 | |
| arr[1] 表示数组中的第二个元素 | |
| arr[0]=10; 表示将数组中的第一个元素修改或者赋值为0 | |
| 动态增加数组 arr[arr.length] | |
| 6.函数 | |
| 函数的作用: 封装功能,可以复用. | |
| 函数的语法: 定义 + 调用 | |
| 函数的定义: | |
| function 函数名(参数){ | |
| //执行语句 | |
| return 结果; | |
| } | |
| 函数的调用: | |
| 函数名(值); //可以将函数的返回值存到变量中使用 | |
| 形参: 函数定义的时候的参数,本质上是一个局部变量 | |
| 实参: 函数调用的时候的参数,需要传入一个具体的值. | |
| 注意; 形参和实参建议一一对应 | |
| 内置实参对象: arguments 使用中括号数组的方式获取实参 | |
| 函数的其他写法: | |
| 匿名函数: function(){} | |
| 函数表达式: var fn=function(){} fn(); | |
| 自调用函数: (function(){})() | |
| 7.对象 | |
| 对象: 就是将现实事物抽象为功能代码. 将现实世界的东西,用对象的语法格式来表示. | |
| 对象的语法: 对象中有属性和方法 | |
| 对象的三种写法: | |
| 1.字面量写法 | |
| var zs={ | |
| name:'张三', | |
| age:18, | |
| sayHi:function(){ | |
| console.log("你好"); | |
| } | |
| } | |
| zs.name | |
| zs.age | |
| zs.sayHi() | |
| 2.new Object()写法 | |
| var zs = new Object(); | |
| zs.name='张三'; | |
| zs.age=18; | |
| zs.sayHi=function(){} | |
| 3.构造函数写法 | |
| function Person(name,age){ | |
| this.name= name; | |
| this.age=age; | |
| this.sayHi=function(){} | |
| } | |
| var zs = new Person('张三',18); | |
| 对象的遍历: for-in | |
| for(var key in Obj){ | |
| console.log(key+'--'+Obj[key]); | |
| } | |
| 8.内置对象 | |
| Math对象 : 数学对象 Math.random() Math.floor() Math.ceil() Math.max() Math.min() | |
| 任意区间随机数公式:Math.floor(Math.random() * (max - min + 1) + min); | |
| Date()时间对象: | |
| var date = new Date(); //获取当前时间 | |
| var date = new Date('2018-8-8 12:12:12'); //获取当前时间 | |
| var date = new Date('2018/8/8'); //获取当前时间 | |
| var date = new Date(2018,7,6); //获取时间,月份会大1 ,7 表示8月份 | |
| 1.先转换成毫秒,然后再转换成年月日,时分秒 | |
| date.getTime() | |
| date.Valueof() | |
| date.now() | |
| 2.通过对象的内置方法,直接获取年月日,时分秒 | |
| date.getFullYear(); //年 | |
| date.getMonth(); //月 0 一月份 1 二月份 | |
| date.getDate(); //日 | |
| date.getDay(); //星期几, 0 周日 1周一 6周六 | |
| date.getHours(); //小时 | |
| date.getMinutes(); //分钟 | |
| date.getSeconds(); //秒数 | |
| 3.会计算时间差. | |
| 1.毫秒相减 ,除以1000,变成秒数差 | |
| 2.计算天,时,分,秒 | |
| d = parseInt(总秒数/ 60/60 /24); // 计算天数 | |
| h = parseInt(总秒数/ 60/60 %24) // 计算小时 | |
| m = parseInt(总秒数 /60 %60 ); // 计算分数 | |
| s = parseInt(总秒数%60); // 计算当前秒数 | |
| 3.判断是否个位数,然后补0 | |
| h = h<10? '0'+h : h; | |
| 字符串对象 | |
| 1.indexOf(要查找的字符,开始位置) 开始位置不写默认从0开始,找不到返回-1 ----查找字符 | |
| 2.charAt(字符位置) 给一个位置,返回该位置的字符 ----获取字符 | |
| 3.subStr(开始位置,截取个数) 返回截取的字符串结果 ----截取字符 | |
| 4.replace(要替换的字符,替换的新字符) ----替换字符 | |
| 5.join(连接符) 将数组通过连接符连接,返回字符串 ----连接字符 | |
| 6.split(连接符) 将字符根据连接符分割成多个值的数组,返回数组 ----分割字符 | |
| 7.toUpperCase() 将字符串转换为大写 ----转换成大写 | |
| 8.toLowerCase() 将字符串转换为小写 ----转换成小写 | |
| 数组对象: | |
| 1.push() 后面添加元素 | |
| 2.pop() 后面删除元素 | |
| 3.unshift() 前面添加元素 | |
| 4.shift() 前面删除元素 | |
| 5.reverse() 翻转数组 | |
| 6.sort() 排序数组 | |
| arr.sort(function(a,b){ | |
| return a-b; //升序 | |
| }) | |
| arr.sort(function(a,b){ | |
| return b-a; //降序 | |
| }); | |
| 7.concat() 合并数组 | |
| var arr3 = arr1.concat(arr2); | |
| 8.splice 删除/修改/添加数组 | |
| arr.splice(开始位置); //从开始位置删除到最后 | |
| arr.splice(开始位置,删除个数); //从开始位置删除几个 | |
| //新增内容 | |
| arr.splice(开始位置,0,新增元素); | |
| arr.splice(1,0,'a','b'); //在索引1元素之前插入a和b | |
| //替换内容 | |
| arr.splice(开始位置,删除个数,新增元素); | |
| arr.splice(1,1,'d'); //在索引为1开始删除一个元素,替换为 | |
| 9.indexOf() 查找数组 | |
| 查找数组中的元素位置 | |
| arr.indexOf(元素); //返回元素的索引位置,如果没有返回-1 | |
| arr.indexOf(元素,开始位置); //从开始位置继续向后找. | |
| arr.lastIndexOf(元素) //返回元素索引位置,如果没有返回-1,从后往前找 | |
| 10.tostring() 转换为字符串 | |
| 数组转换为字符串 | |
| arr.toString(); 将数组中的每个元素用逗号链接成字符串 | |
| 11.join() 数组拼接分隔符 | |
| arr.join(); //默认以逗号连接数组,拼接成字符串 | |
| arr.join(分隔符); //以分隔符连接数组元素,拼接成字符串 | |
| 9.其他 | |
| 1.变量的命名规范 | |
| 1.字母,数字,下划线,$等组合, | |
| 2.数字不能开头 | |
| 3.不能是关键字 | |
| 4.不能是中文 | |
| 5.建议使用驼峰命名 | |
| 2.输出打印 | |
| alert() | |
| console.log() | |
| prompt(); | |
| 3.转义字符 | |
| \n 换行 | |
| \t tab制表符 | |
| 4.预解析 | |
| 变量声明和函数声明提前 | |
| 5.作用域和作用域链 | |
| 作用域:变量的作用范围 | |
| 作用域链: 人外有人,天外有天 | |
| 6.局部变量和全局变量 | |
| 全局变量有两种: | |
| 1.在括号外面直接写的变量 | |
| 2.在函数内部,未使用var声明但直接赋值的变量 | |
| 局部变量: | |
| 1.形参就是局部变量 | |
| 2.函数内部的变量就是局部变量 | |
| 注意:js中没有块级作用域 | |
| { | |
| var a=1; | |
| } | |
| 7.this和new的理解 | |
| this的指向问题: | |
| 1.函数在定义this的时候是不确定的,只有在调用的时候才可以确定 | |
| 2.一般函数直接执行,内部this指向全局window | |
| 3.this的指向,谁调用指向谁 | |
| 4.构造函数中的this 对象的实例 | |
| new在执行时会做四件事情 | |
| 1.new会在内存中创建一个新的空对象 | |
| 2.new会让this指向这个新的对象 | |
| 3.执行构造函数里面的代码,目的是给这个新对象加属性和方法 | |
| 4.new会返回这个新对象,所以构造函数里面不需要return | |
| 8.运算符和优先级 | |
| 1.() | |
| 2.++ -- ! | |
| 3.先* / % 后+ - | |
| 4.< > <= >= == != === !== | |
| 5.先&& 后|| | |
| 6.赋值运算符 | |
| 注意: 等于和不等于 == === != !== | |
| ++a 和 a++ | |
| && 并且 | |
| || 或者 | |
| ! 取反 | |
js基础复习点的更多相关文章
- JS基础 复习: Javascript的书写位置
爱创课堂JS基础 复习: Javascript的书写位置复习 js书写位置:body标签的最底部.实际工作中使用书写在head标签内一对script标签里.alert()弹出框.console.log ...
- JS基础复习
js基础语法 Netcape js基础语法规范(ECMAScript1,2,3,3.1,5(IE9),6 ES ES6=es2015) DOM BOM ...
- js基础复习~Array对象
Array对象 lenght 获取到数组的长度 concat() 方法用于合并两个或多个数组.此方法不会更改两大有数组,而是返回一个新的数组 let arr1 = ["a",&qu ...
- [JS复习] JS 基础知识
项目结尾,空闲时间,又把<JS 基础知识> 这本书过了一遍,温故知新后,很多知其然不知其所以然的内容 豁然开朗. [1. 用于范围的标签] display :inline or bloc ...
- day51 JS基础
复习 1.字体图标 用i标签, 设置类名, 与第三方字体图标库进行图标匹配 <link rel="stylesheet" href="font-awesome-4. ...
- js 基础篇(点击事件轮播图的实现)
轮播图在以后的应用中还是比较常见的,不需要多少行代码就能实现.但是在只掌握了js基础知识的情况下,怎么来用较少的而且逻辑又简单的方法来实现呢?下面来分析下几种不同的做法: 1.利用位移的方法来实现 首 ...
- 《CSS权威指南》基础复习+查漏补缺
前几天被朋友问到几个CSS问题,讲道理么,接触CSS是从大一开始的,也算有3年半了,总是觉得自己对css算是熟悉的了.然而还是被几个问题弄的"一脸懵逼"... 然后又是刚入职新公司 ...
- js 基础
js基础知识点总结 如何在一个网站或者一个页面,去书写你的js代码:1.js的分层(功能):jquery(tool) 组件(ui) 应用(app),mvc(backboneJs)2.js的规划():避 ...
- js基础练习二之简易日历
今天学到了js基础教程3,昨天的课后练习还没来的及做,这个是类似简易日历的小案例,视频还没听完,今晚继续...... 先看效果图: 其实做过前面的Tab选项卡,这个就很好理解了,通过鼠标放在不同月份月 ...
随机推荐
- 自学Python,新手上路,好资源免费分享
Python 可以用来做什么? 在我看来,基本上可以不负责任地认为,Python 可以做任何事情.无论是从入门级选手到专业级选手都在做的爬虫,还是Web 程序开发.桌面程序开发还是科学计算.图像处理, ...
- Asp.Net Core 轻松学-经常使用异步的你,可能需要看看这个文章
前言 事情的起因是由于一段简单的数据库连接代码引起,这段代码从语法上看,是没有任何问题:但是就是莫名其妙的报错了,这段代码极其简单,就是打开数据库连接,读取一条记录,然后立即更新到数据库中.但是,惨痛 ...
- kubernetes实践之四:深入理解控制器(workload)
一.Pod与controllers的关系 controllers:在集群上管理和运行容器的对象 通过label-selector相关联 Pod通过控制器实现应用的运维,如伸缩,升级等 二.Deploy ...
- Windows Server 2016-OU组织单位日常操作
技术无所谓贵贱,既然曾经做过就总该是要留下点什么,毕竟做技术这些年给我们留下太多太多的成长经历,总有人问这些已经很皮毛了为什么还要写,其实没那么多花哨理由,就是想着做或者不做这一块总是要对过往做个简单 ...
- 配置IIS网站,我遇到的那些坑~
配置错误 不能在此路径中使用此配置节.如果在父级别上锁定了该节,便会出现这种情况.锁定是默认设置的(overrideModeDefault="Deny"),或者是通过包含 over ...
- 接触新的项目,构建时候报错:Failure to find io.netty:netty-tcnative:jar:${os.detected.classifier}:2.0.7.Final in
详细信息如下: Failure to find io.netty:netty-tcnative:jar:${os.detected.classifier}:2.0.7.Final in http:// ...
- 对 Undefined 与 Null 的一些理解
Undefined 和 Null 是 Javascript 中两种特殊的原始数据类型(Primary Type),它们都只有一个值,分别对应 undefined 和 null ,这两种不同类型的值,既 ...
- 百度地图点击地图显示地址详情的默认方法怎么关闭,去掉百度地图api图标信息
去掉百度地图api图标信息 调用百度地图API时,如果想去掉百度的logo,只需要在css里设置: <style> .anchorBL{display:none} </style&g ...
- C#类型(一)
1.System.Object C#的所有类型都是派生自System.Object 也就是说下面的两个类型定义完全一致 // 隐式派生自Object public class Person{ } { ...
- VS Code实用技能1 - 代码折叠、面包屑
VS Code实用技能 VS Code实用技能1 - 代码折叠.面包屑 一.代码折叠 ubuntu ctrl + shift + { ctrl + shift + } ctrl + k , ctrl ...