汇总

一个完整的 JavaScript 实现应该由下列三个不同的部分组成:
1.核心(ECMAScript)
2.文档对象模型(DOM)
3.浏览器对象模型(BOM) *js下学习

js可以实现页面交互效果,主要运行在客户端,浏览器解释执行,种差家属Python,PHP的一种专门为网页交互设计的客户端解释性脚本语言,1995年创建。

1995年JS诞生;97年ECMAscript诞生,2009年ECMA5出现,2015年ECMA6出现

onclick 点击事件【onclick="" js行内样式】 src引入外部js文件地址路径 ,js文件从上到下逐渐显示

js内嵌样式:script

js输入输出语句:(主要三个) # 页面输出文字 document.write(‘叽叽呱呱’) 在页面输出叽叽呱呱。【可以识别标签】
1.alert(msg) 浏览器弹出警示框 归属于浏览器 【有堵塞页面执行的作用】

2.prompt(info) 浏览器弹出输入框,用户可以输入 归属于浏览器

3.console.log(msg) 浏览器控制台打印输出信息 归属于浏览器,在控制台可以看见,在审查元素中console显示

变量:变量是一个可以存储单个可变信息的容器

变量的使用分两步(1.声明变量 2.赋值)
1.var是一个js关键字,用来声明变量(variable变量的意思),使用关键字声明后,计算机会自动为变量分配空间,不需要程序员参与。

2.age是程序员定义的变量名,通过变量名访问内存中分配的空间。

3.=用来把右边的值赋予左边的变量名空间中,右边的值为变量值。即程序员保存到变量空间中的值。

4.声明变量并直接给他一个值,叫变量的初始化。#

声明多个变量,在var后面加变量名和变量值,中间用逗号隔开就可以。console.log()括号中的变量用逗号隔开,也可以添加多个变量。

5.一个变量给多个值,以最后一个变量值为准。变量之间用逗号隔开可以声明多个变量。【不建议】

声明变量的特殊情况:
1.只声明不赋值[var sex; console.log(sex)],程序不能识别,会显示undefined(未定义的)。defined 定义。
2.不声明直接赋值使用【console.log(tel)】,系统会报错,不删除会导致后续变量无法无法识别。
3.不声明直接赋值使用【QQ=123; console(QQ)】,可以识别,但不建议使用

变量命名规范:
1.由字母,数字,下划线,美元符号$组成。【空格也不允许】
2.严格区分大小写 var app;和var APP;是两个不同的变量。
3.不能以数字开头。 命名错误会在下方出现波浪线标识。
4.不能是关键字,保留字。如var,for,while,name
5.遵循驼峰命名法,即首单词字母小写,后面的单词首字母大写。(myName 小驼峰命名法【推荐使用】 MyName 大驼峰命名法)
6.变量名必须有意义,即不取中文拼音,尽量取英文。英文命名单词可以在有道,爱词霸翻译网站搜索。

DOM操作是一个使程序和脚本有能力动态的访问和更新文档的内容,结构以及样式的平台和语言中立的接口。

DOM节点分为三大类:元素【标签】节点,属性节点,文本节点

节点之间的关系:文本节点,属性节点是属于元素节点的子节点。

查找DOM节点:
1.通过ID名查找DOM元素 语法:document.getElementByld("id名")
var 变量名=document.getElementByld(‘id名’);
console.log(‘变量名’);
2.通过标签名找DOM元素 语法:document.getElemensByTagName(“标签名”)【classname 通过class名查找元素】
3.修改设置元素的内容 语法:innerHTML=‘内容

4.修改添加样式 # 在变量名.innerHTML修改之前添加
语法:1. 变量名.style=‘修改内容’; 2.变量名.style.css属性名【背景,边框之类的】=‘属性值’; 3.变量名.style.cssText=‘修改内容’;【扩展】

5.数组[]:所有数据的集合,[]中可以添加数字,字符

document.querySelectorAll(‘ul>li’)获取ul下所有li,不获取其他ol下li。
document.querySelector(‘ul>li’) 获取ul下第一个li。
document.querySelector(# 或者. )获取id为某某或class名为某某的元素
【变量名.length】获得打印输出的总个数

获取元素class名语法:元素.className
修改元素class名语法:元素.className=‘内容’

数据类型:基本数据类型:数字,字符串,布尔,undefined,null

布尔类型 boolean:返回值:true真 false假 一个=是赋值,==是判断【返回值为布尔类型】,===是全等,不仅判断结果还要判断类型

null==undefined null===undefined false

引用类型:object:array
function

临时变量【temp】:有一个容器类的作用,可以在交换两个变量的值时,做临时储存使用。;

举例: 这样可以把app1的变量值与app2的变量值互相转换。
var temp;【声明一个临时变量为空】
var app1=‘青苹果’;
var app2=‘红苹果’;
temp=app1; (把右边给左边)
app1=app2;
app2=temp;
console.log(app1);
console.log(app2);

js的变量数据类型是只有在程序运行过程中,根据等于号右边的值来确定的。
var nub=10; nub为数字型
nub=‘嘎嘎’ nub变为字符串型

js把数据类型分为两类:简单数据类型【Number,String,Biilean,Undefined,Null】和复杂数据类型【object】

数值类型number【用来表示数字的,任何数字都可以使用数值类型,比如年份,价格等】:

包含有整数,小数,NaN【NaN!=NaN 不等于他本身。NaN与任何值运算,都等于他本身】
字符串要加引号,如果没加引号。js会把它当做变量对待
转义字符单引号' 双引号" \r回车 \n换行

进制,常用的进制有二,八,十,十六进制 八进制前加0,十六进制前加0x;

八进制数字序列范围0~7 十六进制数字序列范围09以及af
var num1=07; 对应十进制的7
var num2=019; 对应十进制的19
var num3=08; 对应十进制的8
var num4=0xa; 推出num4变量值为10

数字型最大值 console.log(number.max_value)
数字型最小值 console.log(number.mix_value)
数字型无穷大 console.log(number.max_value2) 得出infinity【无穷大】
数字型无穷小 console.log(-number.max_value
2) 得出-infinity【无穷小】
数字型非数字 console.log(pink-100) 得出nan 非数字

isnan()用来判断一个变量是否为非数字类型,并返回一个值,如果是数字返回false,如果不是数字,返回true。
console.log(isnan(pink)) 返回true
console.log(isnan(123)) 返回false

typeof:检测数据类型,但是type检测数据 语法:typeof(内容) typeof 内容

parselnt【取整】 parselnt (值) 小数点之后,字符串之后不显示,输出NaN

parsefliat【取小数】 parsefloat(值) 显示第一个小数点之后的小数,第二个小数点之后的数和字符串不显示。

isNaN 检测是否是非数字 语法:isnan(检测值) 返回值:非数字true 数字false

字符串转换:string toString【undefined,null不能使用】

运算符是用于执行一个及以上操作数项目运算的符号
包括:算术运算符,辅助运算符,比较运算符,逻辑运算符,条件运算符

Infinity 正无穷 -Infinity负无穷

负无穷减负无穷=NaN

toFixed 保留小数 语法:值.toFixed(保留几位小数) 举例:str.toFixed(2)

如何比较运算符
两个操作数都是数值,数值比较
两个操作数都是字符串,则比较两个字符串对应的字符串编码值
两个操作数有一个是数值,则将另一个数转换为数值,进行比较

&&逻辑与:遇到&&找假,如果有假,则返回第一个假值,如果全为真,则返回最后一个真值
【假值:0,"",NaN,null,undefined,false】
||逻辑或:遇到||,找真,如果有真值,则返回第一个真值,如果全部为假值,则返回最后一个假值

三元表达式:变量名=表达式?表达式1:表达式2

条件语句:
if语句:多用于区间判断

switch语句【多用于固定值判断】:利用我们表达式的值和case后面的选项值相匹配,如果匹配上,就执行case里面的语句,如果没有匹配上,那么就执行default里面的语句
switch(表达式){
case 表达式1:
输出方式
break;
switch(表达式【通常用一个以声明的变量来容纳】){
case 表达式2:
输出方式
break;
default:
输出方式
}

循环语句:条件控制循环 计数控制循环
while(表达式){
语句块;
}

do
{
语句块
}while(表达式)

for(表达式1;表达式2;表达式3){
语句块;
}
先执行表达式1,再判断表达式2,条件成立,执行语句块然后执行表达式3增加变量

break 跳转 可以用在switch和循环中,结束本层循环

contioue 继续,移动,跳过本次循环,继续下一个循环 只能用在循环中

funcition 声明函数,是代码中的模具
var 声明变量

函数声明式
funcition 函数名()

形参:形式函数,声明函数时,定义的参数名
实参:实际参数,调用函数时,传过去的参数值
形参和实参一一对应
匿名函数:function(){}
调用匿名函数:
(function(){})()

变量提升

在js环境中只要出现var或者funcition,先提升变量

全局变量,局部变量

函数返回值return return 变量名 可以返回js中的任意数据类型
函数返回值未定义 return 和没有return 如果函数没有显示使用return语句,或后面没有任何值,那么函数默认返回值是undefined return后语句不会再执行,return语句只适应函数

arguments 类数组,返回所有实参的集合
arguments[i] 获取某一项实参 i是数组的下标,从0开始计算
arguments.length:获取实参长度
arguments[arguments.length-1]获取实参最后一位

函数中没有var,为全局变量,可以在外部使用这个变量;如果var了,即使和函数外的变量名一样,也没有任何关系

markdown文档

客观说法:一切皆对象【面试不能说】

定义对象两种方法:
字面量定义:var obj={属性名:属性值,属性名:属性值}

new关键字定义:var obj=new Object({属性名:属性值,属性名:属性值}); 【new后首字母大写】

获取属性值:obj.属性名 obj[‘属性名’]

添加属性的方法:
obj.属性名=属性值
obj[‘属性名’]=属性值

修改属性
obj.属性值=属性名
obj[‘属性名’]=属性值

Math对象
console.log(Math.PI) π 3.1415926535
console.log(Math.pow(3,2)) 三的二次方 幂
console.log(Math.floor(2.2334)) 向下取整 2
console.log(Math.ceil(2.2342)) 向上取整 3
console.log(Math.round(3.54) 四舍五入 4
console.log(Math.random()) 0~1的随机数
console.log(Math.E) 自然数 Math.log
console.log(Math.max(2,3,7) 获取最大值 7 ()没有内容时,输出-infinity 如果max内部有非数字,先转换成数字;如果转后出现NaN,直接输出NaN
console.log(Math.min(false,null,3) 获取最小值 0 ()没有内容时,返回infinity
Math.floor( (Math.random()(m-n+1))+n) 获取n-m中随机数
Math.floor((Math.random()
arr.length) 获取arr数组中随机下标
arr[Math.floor(Math.random()*arr.length)] 获取arr数组中随机某一项

Date 日期,日历 计算机中月份是从零开始计算的,自己设置时间时,注意要比想设置月份减一,如果用字符串包裹,则可以直接设置时间,年月日用逗号,-,/隔开都可以

直接获取当前时间 new Date()

先获取时间,然后:
new.Date().getFullYear() 获取年份
new.Date().getMonth()+1 获取月份
new.Date().getDate() 获取日期
new.Date().getDay() 获取星期 【周日是0,其他正常】
new.Date().getHours() 获取小时
new.Date().getMinutes() 获取分钟
new.Date().getSeconds() 获取秒钟
new.Date().getMilliseconds() 获取毫秒

new.Date().setFullYear() 设置年份 括号里加数值,否则返回NaN
new.Date().setMonth()+1 设置月份
new.Date().setDate() 设置日期
new.Date().setDay() 设置星期 【周日是0,其他正常】
new.Date().setHours() 设置小时
new.Date().setMinutes() 设置分钟
new.Date().setSeconds() 设置秒钟
new.Date().setMilliseconds() 设置毫秒

获取时间戳
new Date()*1
new Date().getTime()
myDate.valueOf()

继承的方法:
valueOf() 返回日期对象的原始值,从1970年1月1日开始计数的毫秒值

display:flex flex:1

[]数组 有序集合 Array数组

maxIndex=变量.length-1 最大下标index=数组长度-1

声明数组方式:

字面量声明:var arr=[1,2,3,4];

new关键字声明:var arr=new Array(1,2,3,4)
1.只有一个参数时,并且这个参数是数值类型,这个参数代表数组长度
2.只有一个参数,这个参数不是数值类型,这个参数代表数值本身

获取数组中某一项 array[下标]

获取数组长度 array.length

修改数组某一项 array[下标]=值

向后添加数组 array[下标]=值

通过长度清空数组 arr.length=0

删除末项 arr.length=数组长度-1

arr.push() 向后添加数组项 返回值:添加后数组的长度,改变原数组

arr.unshift() 向前添加数组项 返回值:添加后数组的长度 改变原数组

arr.pop() 删除数组最后一项 返回值:删除项 改变原数组

arr.shift() 删除数组第一项 返回值:删除项 改变原数组

arr.splice() 万能法:删除【arr.splice(删除起始数下标,删除个数,添加内容。。。)】 返回值:删除项 改变原数组

arr.reverse() 反转数组顺序 返回值:顺序反转后结果 改变原数组

arr.sort() 排序 数组中必须是数字
arr.sort(function(a,b){return a-b}) 升序排列,从小到大
arr.sort(function(a,b){return b-a}) 倒序排列,从大到小
没有参数时,按字符串排序,默认升序

arr.slice(startIndex,endIndex) 截取数组中某一项 第一个参数为开始下标【如果只有第一项,默认从这个下标截取到最后一项,如果参数为负数,代表从后朝前去找】,第二个参数为结束下标,结束项向后推一 【两个参数要满足从小到大,如果没有参数,全部截取(第一个参数默认为0,第二个参数默认为参数长度)】 返回值:截取后的数组项 不改变原数组

arr.concat(arr1) 数组拼接 合并项 返回值:数组拼接后的结果,数组 不改变原数组
arr.indexOf() 数组查找 查找项,开始查找下标 返回值:数组中第一个查找项下标,如果数组中没有这项,返回-1 不改变原数组

lastIndexOf() 从后往前数据查找 返回值:对象下标

arr.join() 数组转化为字符串 返回值:字符串

var arr=[[1,2]3,4] 二维数组

字符串 string

声明方式:字面量:var str=‘’; new关键字:var str=new String();

获取字符串元素:str[下标] 字符串长度:str.length
字符串只要被定义就不能被设置

charAt() 字符串查找

slice() 字符串截取 开始下标,结束下标

substr(a,b) 从a开始,截取b个数 参数下标取值是否能取正

substring() 截取

concat() 合并

toUpperCase() 转大写 toLowerCase() 转小写

str.replace() 替换 第一个参数,改变目标项 第二个参数,改变内容 返回新字符串

str.trim() 字符串去前后空格,中间空格去不掉

str.split() 字符串转数组 用空格会单独分开 ‘ef’分隔符

字符串大小写转化: 转大写:toUpperCase() 转小写:toLowerCase()
Number()转换数字 undefined,‘abc’==>NaN ‘’,null,false,‘0’==>0
null,undefined 不能使用String()字符串转换
Boolean() 转换布尔值 NaN,undefined,‘’,null,0 转换为false

算术运算符:+,-,*,/,%,++,-- 除了+以外,都有隐式转换
赋值运算符 + += -= /= %= 有隐式转换
关系运算符 < > >= <= == === != !== 有隐式转换
逻辑运算符 && || ! 会出现短路情况
三元运算符 A ? B : C
跳转语句 break 终止语句,后续不执行 continue 结束本次循环,进行下一次

函数声明式和表达式区别: 声明式可以前后调用,表达式只能在定义后调用

返回值 return 没有return 函数返回undefined

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,558评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,002评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,024评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,144评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,255评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,295评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,068评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,478评论 1 305
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,789评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,965评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,649评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,267评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,982评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,800评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,847评论 2 351

推荐阅读更多精彩内容

  • 1.1、什么是HTML语义化?有什么好处? 根据内容的结构化(内容语义化),选择合适的标签(代码语义化)便于开发者...
    倾城一梦1123阅读 2,408评论 1 11
  • 一年前写了一篇JavaScript八张思维导图,主要是对前端JavaScript知识点的一个系统的整理和总结。本篇...
    dykingdy阅读 1,776评论 0 0
  • client,page和screen的区别? clientX,clientY是触摸点相对于viewport视口x,...
    change_22fa阅读 1,643评论 1 1
  • <a name='html'>HTML</a> Doctype作用?标准模式与兼容模式各有什么区别? (1)、<...
    clark124阅读 3,464评论 1 19
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,517评论 16 22