JavaScript知识总结
JavaScript
前端开发人员必须了解的七大技能图谱
1. 基本语法
1.1 引入
- 内联试
<a href="javascript:void(0)" οnclick="alert('ok')">点击</a>
- 内嵌式
<script> alert('ok'); </script>
外链式
<script src="demo.js"></script>
1.2 调试输出
- alert():将内容通过对话框弹出到浏览器
- document.write():将内容直接输出到浏览器
- console.log():将内容输出到浏览器的控制台
1.3 语句
- javascript代码的末尾不必须添加分号,但是推荐加上
- javascript严格区分大小写
- javascript会忽略多余的空格
- javascript是脚本语言,浏览器在读取代码时,逐行的执行脚本代码。而对于传统的编程来说,会在执行前对所有代码进行编译(解释型语言)
1.4 注释
- 单行注释:(双斜杠)//
- 多行注释:/**/
1.5 变量:
- 存储信息的“容器”(使用以前的代数来理解)
- 变量的命名规则:变量名由字母,数字,下划线和$组成,且不能以数字开头
// 申明变量 var username = 'zhangsan';
// 同时申明多个变量
var username = 'zhangsan', age = 30, sex = '男';
// 申明变量但是不赋值
var username;
// 不使用var申明变量
username = 'zhangsan';
一个好的编程习惯是,在代码开始处,统一对需要的变量进行声明。
尽可能不要定义全局变量,防止变量污染
1.6 数据类型
字符串(String)、数字(Number)、布尔(Boolean)、数组(Array)、对象(Object)、空(Null)、未定义(Undefined)
只有一种:对象
使用typeof检测数据类型
1.6.1 字符串(String)
- 使用单引号和双引号定义字符串
- 单双引号需要注意的内容
- 单双引号没有区别
- 单双引号可以相互嵌套
- 不可以嵌套自身,除非使用转义字符转义
1.6.2 数字(Number)
- 整型
- 浮点型(计算的时候有计算损耗,不建议进行精确计算)
- NaN(Not a number)
- NaN与任何值运算都为NaN
- NaN与任何值都不想等,包括自身
- isNaN():判断一个值是否时NaN
1.6.3 布尔(Boolean)
- true
- false
1.6.4 数组
// 1. 创建数组的方式var cars = new Array();cars[0] = 'BMW';cars[1] = 'BYD';cars[2] = 'BenZ';// 2.直接定义数组var cars = new Array('BMW', 'BYD', 'Benz');// 3.简单定义var cars = ['BMW', 'BYD', 'Benz'];
1.6.5 对象
var person = {username:'zhangsan', age:20, sex:'男'};// 调用对象的两种方式person.usernameperson['age']
1.6.6 Undefined
- 未定义的变量
- 定义但是未赋值的变量
1.6.7 Null
- 将值设置为null清空变量
1.7 数据类型的相互转化
1.7.1 转化为字符串
- String()
1.7.2 转化为布尔
- Boolean()
- '' 0 0.0 NaN false null undefined->false
- 其余都为真('false','0','null')
1.7.3 转化为数值
- Number() 不包含进制之间的转化
- 普通字符串->NaN
- 纯数字字符串,数值->原型输出
- 空字符串'',空格字符串' ',null->0
- true->1 false->0
- undefined->NaN
- parseInt()
- 从第一个字符开始查找,直到找到非法字符(非数字)截止,返回找到的数字
- parseFloat()
- 从第一个字符开始查找,直到找到非法字符(除数字和第一个小数点之外的字符)截止,返回找到的数字
1.8 运算符
1.8.1 算术运算符
- /
- %:取余
- ++
- --
var a = 3; var b = 5;
a++ + b++ // 9
a++ + ++a // 9
++a + a++ // 8
1.8.2 赋值运算符
- =
- +=
- -=
- *=
- /=
- %=
var a = 3; a += 2; // 相当于 a = a + 2
alert(a) // 5
1.8.3 连接运算符 +
- +号两边是纯数字:+代表加法运算
- 除此之外,+都是连接运算
3 + 5 // 8 3 + '5' // 35 '3a' + 5 // 3a5
1.8.4 比较运算符
- =:赋值操作
- ==:判断双等于号两边是否相等
- ===
- !=
- !==
- >
- <
- <=
1.8.5 逻辑运算符
- &&(两真为真,其余都为假)
- ||(两假为假,其余都为真)
- ! (取反)
1.8.6 条件运算符(三元运算符)
3==3 ? value1 : value2;
1.9 流程控制:条件语句
1.9.1 if条件语句
条件语句用于基于不同的条件来执行不同的动作
// 定义变量 var age = 24;// 只有if判断 if (age < 18) {console.log('小弟弟,你好小'); }// if...else...判断 if (age < 18) {// 当年龄小于18岁的时候,执行此段代码console.log('你还小,不要祸害小姑娘'); } else {// 当年龄大于等于18岁的时候,执行此段代码console.log('不小了,找个小姑娘吧'); }// if...else if...else... if (age < 18) {console.log('小弟弟,你还小'); } else if (age >= 18 && age < 24) {console.log('你还是一个剩斗士'); } else if (age >= 24 && age < 30) {console.log('你是一个必剩客'); } else {console.log('你乃齐天大剩也'); }
1.9.2 switch语句
基于不同的条件来执行不同的动作
var month = 1; switch (month) {case 1:case 3:case 5:case 7:case 8:case 10:case 12:console.log('31天');break;case 4:case 6:case 9:case 11:console.log('30天');break;case 2:console.log('28天');break;default:console.log('输入的月份有问题'); }
2.0 流程控制-循环语句
2.0.1 for循环
for (var i = 0; i < 10; i++) {console.log(i); }
2.0.2 while循环
var i = 0; while (i < 10) {console.log(i);i++; }
2.0.3 do...while循环
var i = 0; do {console.log(i);i++; } while (i < 10);
2.0.4 for...in...循环
var data = {username:'张三',age:20,sex:'男'};for (var i in data) {console.log(i+'===>'+data[i]); }
2.0.5 break和continue语句
// break:终止循环 for (var i = 0; i < 10; i++) {if (i == 4) {break;}console.log(i); }// 最终的结果是:0 1 2 3
// 跳过当前循环继续执行下一次的循环 for (var i = 0; i < 10; i++) {if (i == 4) {continue;}console.log(i); } // 最终的结果是:0 1 2 3 5 6 7 8 9
2.1 正则表达式
2.1.1 元字符
- \d:数字
- \s:空白字符
- \w:约等于A-Za-z0-9_
- ^a-z{6,12}$:必须时6-12位的字母
2.1.2 量词
- * 相当于{0,}
- + 相当于{1,}
- ? 相当于{0,1}
- {6,18}
2.1.3 模式修正符
- i:不区分大小写
- g:执行全局匹配
- m:执行多行匹配
2.2 JSON
2.2.1 JSON功能
存储和传输数据的格式
2.2.2 实例
{"username":"zhangsan", "age":20, "sex":"男"}
2.2.3 JSON方法
- 将JSON字符串转化为JSON对象:JSON.parse()
- 将Javascript对象转换为JSON字符串:JSON.stringify()
2.3 函数
2.3.1 函数定义
// 1.常规定义函数 // demo函数如果被new关键字使用,则为构造函数,如果普通调用,则为普通函数 function demo(){console.log('第一种定义函数方式'); }// 2.使用匿名函数 (function(){console.log('第二种定义函数方式'); })()// 3.使用Function定义函数 new Function('x','y','return x+y;');
2.3.2 函数的特点
- 变量的作用域
- 在函数外申明的变量为全局变量,函数内可以直接调用
- 在函数内使用var申明的变量为局部变量,只能在函数内调用,相当于此函数内的全局变量
- 在函数内直接定义变量为全局变量
- 参数个数
- 形参 > 实参:多余的形参的值为undefined
- 实参 > 形参:多余的实参被忽略
- arguments函数内置对象
- 函数中内置的的所有参数组成的对象
2.4 内置对象
2.4.1 Array对象
- arr.length
- arr.concat()
- arr.join()
- arr.push()
- arr.pop()
- arr.shift()
- arr.unshift()
- arr.sort()
- arr.reverse()
- arr.splice():从数组中添加或删除元素。
- arr.every():检测数值元素的每个元素是否都符合条件。
- arr.map():通过指定函数处理数组的每个元素,并返回处理后的数组。
- arr.filter():检测数值元素,并返回符合条件所有元素的数组。
arr.some():检测数组元素中是否有元素符合指定条件。
2.4.2 Boolean对象
2.4.3 Date对象
- var d = new Date()
- d.getFullYear()
- d.getMonth()
- d.getDate()
- d.getHours()
- d.getMinutes()
- d.getSeconds()
- d.getTime()
d.toUTCString()
2.4.4 Math对象
属性
PI:圆周率
方法
- abs()
- ceil()
- floor()
- round()
- max()
- min()
random()
2.4.5 Number对象
- MAX_VALUE:最大的数
- MIN_VALUE:最小的数
toFixed()
2.4.6 String对象
- length
- split()
- search()
- match()
replace()
- slice()
- indexOf()
- lastIndexOf()
charAt()
- charCodeAt():指定位置的字母对应的Unicode编码
String.formCharCode():将Unicode编码转为字符
2.4.7 RegExp对象
- reg.test(str):使用正则表达式检验str是否符合要求
2.BOM(Window对象)
2.1 全局属性和函数
- 所有的全局变量是window对象的属性
- 所有的全局函数是window对象的方法
- 系统方法
- alert()
- confirm()
- prompt()
- open()
- close()
- moveBy()
- moveTo()
- resizeBy()
- resizeTo()
- scrollBy()
- scrollTo()
- setInterval()
- setTimeout()
- clearInterval()
clearTimeout()
2.2 Navigator对象:获取浏览器的相关信息
- appCodeName 返回浏览器的代码名。
- appName 返回浏览器的名称。
- appVersion 返回浏览器的平台和版本信息。
- cookieEnabled 返回指明浏览器中是否启用 cookie 的布尔值。
- platform 返回运行浏览器的操作系统平台。
- userAgent 返回由客户机发送服务器的 user-agent 头部的值。
userLanguage 返回 OS 的自然语言设置。
2.3 Screen对象:获取浏览器的屏幕信息
- width
- height
- availHeight
availWidth
2.4 Frames对象
父修改iframe的背景色:iframeObj.contentWindow.document.style.background
iframe修改父页面的背景色:parent.document.style.background2.5 History对象
- length:返回浏览器历史列表中URL数目
- back():加载 history 列表中的前一个 URL。
- forward():加载 history 列表中的下一个 URL。
go():加载 history 列表中的某个具体的页面
2.6 Location对象
- hash:锚点 历史回退 pushState(PAJAX)
href
reload()
3.HTML DOM对象
3.1 DOM Document对象
3.1.1 Form表单对象
- document.forms[0]
- document.forms['formName']
- document.formName
- 表单元素对象:formObj.inputName
3.1.2 Select对象
- 属性:- disabled- length- selectedIndex
- 方法:add()remove()
3.1.2 table表格对象
- table.rows:获取表格行
- talbe.insertRow(index):添加行
- table.deleteRow(index):删除行
- row.cells:获取单元格对象
- row.insertCell(index):添加单元格
3.1.3 Cookie对象
document.cookie = 'username=zhangsan;expires=date;path=/;domain=qq.com;secure'
3.2 DOM 功能(通过功能确定DOM是做什么的)
3.2.1 获取并改变HTML标签
- document.getElementById()
- document.getElementsByTagName()
- document.getElementsByName()
- document.querySelector()
- document.querySelectorAll()
- ID名直接获取(用于测试,不推荐用于正式环境)
3.2.2 获取并改变HTML属性
- obj.src
- obj.getAttribute()
- obj.setAttribute()
- obj.removeAttribute()
3.2.3 获取并改变CSS样式
- obj.style.width
- 获取最终的样式(兼容)function getStyle(obj, attr){return obj.currentStyle ? obj.currentStyle[attr] : document.defaultView.getComputedStyle(obj, null)[attr];}
3.2.4 事件处理
3.2.4.1 鼠标事件
- onclick
- ondblclick
- oncontextmenu
- onmouseover
- onmouseout
- onmousedown
- onmouseup
- onmousemove
3.2.4.2 键盘事件
- onkeydown
- onkeyup
- onkeypress
3.2.4.3 表单事件
- onfocus
- onblur
- onsubmit
- onchange
- onreset
- onselect
3.2.4.4 框架对象事件
- onload
- onunload
- onresize
- onscroll
- onerror
- onabort
3.2.4.5 鼠标键盘属性值
- altKey:
- shiftKey:
- ctrlKey:
- keyCode
- clientX:
- clientY:
3.2.4.6 事件冒泡
- stopPropagation():火狐和谷歌
- e.cancelBubble = true; IE火狐谷歌取消冒泡
- jquery中可以用return false阻止冒泡和默认事件
3.3 DOM 节点操作
3.2.1 标签元素的属性
- attribute:
- childNodes:
className:
- firstChild/firstElementChild:
- lastChild/lastElementChild:
- nextSibling/nextElementSibling:
- previousSibling/previousElementSibling:
parentNode:
- nodeName:
- nodeType:1标签 2属性 3文本
nodeValue:
- innerHTML:
- clientWidth:
- clientHeight:
- offsetHeight:
- offsetWidth
- offsetLeft:
- offsetTop:
- scrollWidth:
- scrollHeight:
- scrollTop:
scrollLeft:
3.2.2 标签元素的方法
- appendChild()
- insertBefore()
- replaceChild()
- removeChild()
- cloneNode()
转载于:https://www.cnblogs.com/wessonlu/p/5730903.html
JavaScript知识总结相关推荐
- Javascript知识——事件
O(∩_∩)O~~又是新的一周开始了,今天还是在继续学习Javascript知识,今天主要讲了事件的知识.现在就总结下吧. 事件 事件一般是用于浏览器和用户操作进行交互.最早是 IE 和 Netsca ...
- JavaScript知识(二)
JavaScript知识(二) 原文:JavaScript知识(二) 你要保守你心,胜过保守一切,因为一生的果效,是由心发出的.----O(∩_∩)O... ...O(∩_∩)O...老师因有事下午没 ...
- 【思维导图】巩固你的JavaScript知识体系
[思维导图]前端开发JavaScript-巩固你的JavaScript知识体系 版权声明:转载自CSDN博主「达达前端」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本 ...
- 最新的JavaScript知识总结,欢迎各位大佬指正,需要的留下邮箱,给你们发原稿(PDF版)...
小编整理javascript用的是有道云笔记,导出的word版本,但是代码块显示格式是乱的,不便于阅读 所以,各位有需要的话,小编可以将导出的pdf版发给大家!pdf版跟word没有什么区别,知识没法 ...
- 【JavaWeb】前置知识:CSS与JavaScript知识汇总
本文被 系统学习JavaWeb 收录,点击订阅 写在前面 大家好,我是黄小黄!经过上一篇 从Html入门JavaWeb 的学习,想必大家对标签都有了一定的认识.本文将通过案例,讲解CSS与JavaS ...
- 呕血整理JavaScript知识重点(面试复习必备)
ECMAScript JavaScript 官方名称是 ECMAScript 是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果 ...
- 小米官网项目制作——javascript知识分享上
目录 前言 一.整体架构 二.弹出的盒子 1.定位盒子 2.弹出效果 3.其他细节 三.下拉,展开的切换菜单 1.放置盒子 2.切换盒子 3.添加索引 4.侧边展开的盒子 四.轮播图 1.本体的部件 ...
- 小米官网项目制作——javascript知识分享下
目录 前言 一.观察页面内容 二.切换界面 三.登录表单界面 1.选中的效果 2.错误提示 3.不选中的效果 4.密码框 四.注册界面 五.链接跳转 总结 前言 之前我分享了关于小米官网主页的java ...
- javascript知识点_一点点JavaScript知识是第1部分很危险的事情
javascript知识点 几乎是一个数据库的奇怪故事 (The Strange Tale of the Almost-a-Database) 这不是教程,这是一个警告性的故事. (This is n ...
- JavaScript知识梳理 -从面向过程到面向对象(四)
面向对象案例 1.选项卡切换案例 1.1.css样式 <style>*{margin: 0;padding: 0;}.box{width: 400px;height: 300px;marg ...
最新文章
- python元组转字典_python中怎么将元组、字典转化为列表
- bezier曲线_Bezier算法
- leetcode147 对链表进行插入排序
- python gil锁_python--GIL锁
- docker network host模式
- 操作系统饥饿现象_操作系统试题
- 修改Linux用户的UID、GID
- Hadoop初步简介
- [Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端
- java B2B2C Springboot仿淘宝电子商城系统(六)springboot整合mybatis
- 计算机 仿真 流体力学剪切应力,基于人体血管B型主动脉夹层三维建模及血流动力学仿真研究...
- 机器人对话常用语模板_电话机器人的销售能力
- 关于Snoop的用法
- iphonex适配游戏_Unity+iPhoneX适配方案
- Dockerfile Registry WebUI 之 docker-registry-frontend 高级应用
- android 交互什么意思,知乎安卓客户端交互设计分析
- 面试题57:和为s的数字
- 山澤損 (易經大意 韓長庚)
- JSP实验室预约管理系统
- Chrome播放视频时只有声音没有画面
热门文章
- python图片-Python中的十大图像处理工具
- python官网地址-python官网地址
- python做电脑软件-程序员带你十天快速入门Python,玩转电脑软件开发(二)
- python和excel的区别-Python与Excel 不得不说的事情
- 安装完python后怎么使用-python安装后怎么启用
- pythonis啥意思-isinstance在python中的意思是什么?
- python类型-python基础之五大标准数据类型
- python3.5怎么安装pip-python3.5版本安装pip3
- 报班学python到底怎么样-你们都是怎么学 Python 的?
- python开发软件行么-python适合开发桌面软件吗?