2019-03-31 JavaScript基础
认识js
js 可以插入到<head>和<body>里
变量的声明和赋值
语法:var 变量名;
(变量名不可以数字开头)
ps:省略var声明的变量是全局变量。
数据类型
typeof
检测变量的数据类型
语法:typeof 变量名;或 typeof(变量名);
undefined
没有定义类型;
ps:如果定义了一个变量,没有给这个变量赋值,那么就是undefined;
null
空对象指针
如果定义的变量未来要用于保存对象,那么最好初始化为null;
ps:undefined==null返回值是true;
console.log();
控制台打印;
number
表示整数和浮点数
NaN:非数值(not a number),一个特殊的数值;
NaN与任何值都不相等,包括它本身。
函数isNaN();
用来检测变量是否是非数值。
返回类型是Boolean。
ps:isNaN()在接收变量时会尝试转换为数值,然后再检测。
函数Number();
把非数值转换为数值。//强制转换
如果转换不成数值就会是NaN;
函数parseInt();
用于把字符串转换成数值。
1:忽略字符串前面的空格,直至 找到第一个非空格字符。
只能提取以数字开头的字符串的数字如“34px”,返回的就是34;
如果是以字母开头的字符串,本函数提取不出来,如“abc234”,就是返回NaN;
2:parseInt(“0xf”,16);就是把f转换成16进制,结果是15;相当于parseInt(“0xf”);
函数parseFloat()
用于把字符串转换成数值。
string
字符串类型,一定要用 " " 或者 ' ' 引起来;
函数tostring()
语法:str.tostring()
将str转换成一个字符串
转换的内容:数值,布尔,对象, 字符串
函数string()
语法:string(对象);
转换内容可以是任何类型;
Boolean
用于表示真假
1:所有数字除了0之外,转换为布尔类型都是true
2:所有字符除了“ ”之外,转换为布尔类型都是true
3:null和undefined转换为布尔型是false
操作符
算术操作符
+-*/
两个数据相加,如果有一方是字符串那么加号的作用就是将他们进行拼接。
除了+隐式转换,会自动把类似“122”的字符串转换为number类型122
递增和递减
++a 先返回递增后a的值
a++ 先返回a的原值,再返回递增后的值
赋值操作符
比较操作符
==
!=
!==
三元操作符
条件?执行代码1:执行代码2
逻辑或
image.png语句
if语句
if(条件1){
状态1;
}
else if(条件2){
状态2;
}
else{
状态3;
}
js常用语法:
弹出一个可输入框prompt(“”);
弹出一个警示框alert(“”);
获取星期返回值是number0-6:new Date().getDay();
向浏览器输出内容document.write();
switch语句
switch(条件要判断的内容)
{
case 值1:状态 break;
case 值2:状态 break;
·····
default:状态;
}
break是退出循环;
for语句
for(语句1;语句2;语句3)
{
执行代码块;
}
语句1:在代码块开始前执行
语句2:定义循环的条件
语句3:代码块执行后执行
while语句
while(循环条件)
{
语句块;
}
ps:for适合已知循环次数的循环体,while适合未知循环次数的循环体。
break语句
跳出循环
continue语句
跳出本次循环
函数
声明函数
function 函数名(【参数】)
{
函数内容;
}
函数调用
函数名(【参数】);
arguments参数
它有一个length属性确定参数的个数
函数从外边传进去的参数都保存在arguments里。
可以通过arguments【索引号】来访问对应的参数值。
索引号是从0开始的正整数,第一个参数的索引值是0;
ps:常出的面试题:
求任意一组数的平均值(个数不定)
function getAvg(){
var sum=0,len=arguments.length;
var i;
for(i=0;i<len;i++)
{
sum+=arguments[i];
}
return sum/len;
}
数组
创建数组
new Array();
ps:创建一个保存颜色的数组
var colors = new Array();
new Array(可以是一个数值)表示数组长度;
new Array(可以是值1,值2,值3....)表示数组的值;
var 自变量 = [值1,值2,值3....];
ps:var cols=[“red”,“yellow”,“green”];
注:数组里面的每一个值的数据类型没有限制;
数组.length
数组的长度
数组方法
push()
在数组的尾部添加值
ps: var colors = new Array(“red”,“green”);
colors.push(“blue”,“yellow”);
或者是:var len = colors.push(“blue”,“yellow”);
len的值是colors的长度 4
unshift()
在数组头部添加值
ps:var nums = [2,7,8,6];
var size = nums.unshift(99,66);
size的值是6
pop()
删除数组的最后一个元素
arrayObject.pop()
返回值是被删除的元素
shift()
arrayObject.shift()
删除数组的第一个元素
返回值是被删除的那个元素
join()
数组的转换方法
arrayObject.join(separator);
把数组中的所有元素 放入一个字符串
返回值是一个字符串
separate是分隔符 默认是逗号,
reverse()
数组逆序方法
sort()
数组排序方法
sort在排序过程中,会把每一个数组元素转换成字符串,按照字符串的首字母来进行排序。
当时数字数组要排序时,要这样写:
arr.sort(function(a,b){return a-b})//升序
arr.sort(function(a,b){return b-a})//降序
concat()
用于连接两个或多个数组
arrayObject.concat(arrayX,arrayY,。。。)
slice()
从已有的数组中返回选定的元素
通过索引截取值返回值是数组
ps:面试题
完成以下代码片段,实现b数组对a数组的拷贝,方法越多越好
var a=[1,"red",3],b;
//数组遍历 push
b=new Array();
for(var i=0;i<a.length;i++)
{
b.push(a[i]);
}
//concat()
b=[].concat(a);
//slice()
b=a.slice(0);
splice()
删除
arrayObject.splice (index,count);
需要有 索引和个数
个数为0时不删除
只有索引时,该索引后面的所有值都删除
插入
arrayObject.splice (index,0,items1,items2.。。。);
指定位置插入值
注意,想要往哪个位置后边插,index的值就是那个后置后边位置的索引值
替换
arrayObject.splice (index,count,items1,items2.。。。);
在指定位置插入值,且同时删掉任意数量的值
count要删掉的项数
indexOf
从数组的开头(位置0)开始向后查找
arrayObject.indexOf(searchvalue,startIndex);
从数组的开头 位置0开始 向后查找
searchvalue 必须有 要查找的项
startIndex 选有 起点位置的索引
返回值是一个number 记录第一个找到的位置索引,没找到返回-1
lastIndexOf
从末尾开始查找
ps:IE9以下的浏览器不支持这两个查找方法
//封装一个方法实现index的功能
function ArrayIndexOf(arr,value){
//检测value在arr中出现的位置
for(var i=0;i<arr.length;i++){
if(arr[i]===value)
{
return i;
}
}
return -1;
}
ArrayIndexOf(nums,8);
string
charAt()
stringObject.charAt(index);
功能是返回index位置的字符
charCodeAt()
功能是返回index位置字符的字符编码
indexOf(“”)
功能是从一个字符串中搜索给定的字符串,返回子字符串的位置
slice()
stringObject.slice(start,end);
功能 截取字符串
start 必需 指定字符串开始位置
end 可选 表示结束位置 省略时截取至末尾
如果参数值是负数,则其值为字符长度+该负数
substring()
语法和用处与slice一致
除了碰到负数,转为0;
substring会以较小数字为开始位置,较大数字为结束位置。
substr()
截取字符串
stringObject.substr(start,len);
len可选,表示截取字符串的长度,没有时默认截止至末尾。为负值时,截取字符串是空值
split()
stringObject.split(separator);
功能是 把字符串切割成字符串数组
separator 是分隔符
replace()
stringObject.replace(regxp/substr,replacement);
用一些字符替换另一些字符,或替换一个与正则表达式匹配的字串
regexp必须 规定子字符串或要替换的模式的regexp对象
replacement 必须 一个字符串的串值
该语法不会改变自身字符串,而是返回一个替换后的新字符串
ps:
var tele='010-124432-213,010-345342-213,010-3497290-349';
var newTele=tel.replace(',',' ');
console.log(newTele);
toUpperCase()与toLowerCase()
up把字符串转化为大写
Lo把字符串转化为小写
Math对象
min()
Math.min(num1,num2,num3....)
求一组数中的最小值
max()
Math.max(num1,num2,num3....)
求一组数中的最大值
ceil()
Math.ceil(num)
向上取整,即返回大于num的最小整数
floor()
Math.floor(num)
向上取整,即返回小于num的最大整数
round()
取整
四舍五入
abs()
绝对值
random()
公式:random=Math.floor(Math.random()*(m-n+1)+n);
封装求n-m之间的随机整数
date对象
创建一个日期时间对象
var today = new Date();
console.log(today);
获取时间
image.png
DOM对象
查找ID
document.getElementById("id");
功能:返回对拥有指定id的!第一个!对象的引用
查找标签
document.getElementByTagName("TagName");
功能:返回对拥有指定所有标签的引用
ps:如果想要获取某个ID下的某类标签
document.getElementsById("id").getElementByTagName("TagName");
返回的是一个数组
设置元素样式
语法:ele.style.styleName = styleValue;
功能是设置ele元素的style样式
ele是要设置样式的dom对象
styleName不能以用“-”形式 要用驼峰形式 :font-size要写成fontSize
innerHTML
ele.innerHTML
功能是返回开始标签和结束标签之间的HTML内容
ele.innerHTML="html"
功能是设置开始和结束标签之间的HTML内容
className
ele.className
返回ele元素的class属性
ele.className=“cls”
设置ele元素的class属性为cls
ps:className是重新设置一个元素的类,替换元素本身的class
获取属性
语法:ele.getAttribute("attribute")
功能:获取ele元素的attribute属性
attribute是要获取所有的HTML属性
ps:id,type,align,value....除了class的标签自带的属性
都可以.属性名而class要获取 则是.className
设置属性
语法:ele.setAttribute("attribute",value)
功能:设置ele元素的attribute属性
如果value是字符串,需加以“”
删除属性
语法:ele.removeAttribute("attribute")
功能:删除ele元素的attribute属性
事件
HTML事件
语法:<tag 事件=“执行脚本”></tag>
功能:在HTML元素上绑定事件
ps:<input type="button" value="弹出" onclick="alert('我是按钮')">
onload:页面加载时触发
onclick:鼠标点击时触发
onmouseover:鼠标划过时触发
onmouseout:鼠标离开是触发
onfocus:获得焦点时触发
用于type为text、password,textarea标签;
onblur:失去焦点时触发
onchange:域的内容改变时触发
作用域在select,checked或radio
this指向
在事件触发的函数中,this是对该DOM对象的引用
onsubmit表单中的确认按钮被点击发生
不是加在提交按钮上,是加在表单上
onmousedown鼠标按钮在元素上按下时触发
onmousemove在鼠标指针移动时发生
onmouseup在元素上松开鼠标按钮时触发
onresize在调整浏览器大小时触发
onscroll拖动滚动条时触发
!键盘事件与keycode属性
onkeydown:在用户按下一个键盘时发生
onkeypress:在按下键盘时发生(只会响应字母与数字符号)
onkeyup:在 键盘按键被松开时发生
键盘按键事件触发顺序:onkeydown>onkeypress>onkeyup
keycode:返回onkey事件触发的值的字符代码或者键的代码
BOM对象
BOM(browser object model)浏览器对象模型
window对象
window对象是浏览器的一个实例,它有双重角色,一是通过js访问浏览器窗口的一个接口,又是ECMA规定的全局对象
windows.alert("content")
功能:带有一段消息和一个确认按钮的警告框
windows.confirm("message")
功能:显示一个带有指定消息和ok及取消按钮的对话框
如果点击确定按钮,返回true
点击取消按钮,返回false
windows.prompt("text,defaultText")
text要在对话框中显示的纯文本
default默认的输入文本
返回值:点击取消按钮,返回null
点击确认按钮,返回输入字段当前文本
windows.open(pageURL,name,parameters)
打开一个新的浏览器窗口或者查找一个已命名的窗口
pageURL子窗口路径
name子窗口名称
parameters窗口参数(各参数用逗号分离)
窗口参数
windows.close(pageURL,name,parameters)
关闭窗口
setTimeout (code,millisec)
延迟多少毫秒后执行某段代码
code要调用的函数
millisec在执行代码前要等待的毫秒数
setInterval(code,millisec)
每隔指定的时间执行一次代码
code:要调用的函数
millisec周期性执行或调用code之间的时间间隔毫秒计数
clearTimeout(id)
清除id对应的延迟
navigator
navigator.userAgent
用的是什么浏览器
screen
包含有关客户端显示屏幕的信息
screen.availWidth
返回可用的屏幕宽度
screen.availHeight
返回可用的屏幕高度
image.png
history
history.back()
回到历史记录的上一步;相当于history.go(-1)
history.go(负数)
负几就是返回到前几步
history.forward()
回到历史记录的下一步;相当于history.go(1)
history.go(正数)
几就是回到历史记录的下几步
location
location.href 等同于window.location.href
返回当前加载页面的完整url
location.hash
返回URL中的hash(#后跟0或多个字符),如果没有就返回空字符串
location.host
返回服务器名称与端口号
location.hostname
返回不带端口号的服务器名称
location.passname
返回url中的目录和文件名
image.png
location.reload()
重新加载当前页面
location.replace(url)
跳转到的URL会取代当前的URL,不会在历史记录中生成新记录