一、类型转换
1.Number -> String
①String(123)
②(123).toString
2.String -> Number
①Number("123")
3.Boolean -> String
①(true).toString
②String(true)
4.String -> Boolean
①Boolean("true")
5.Date -> String
①String(new Date())
②
6.Date -> Number
①new Date().getTime() //获取时间,number类型
7.Boolean -> Number
①Number(true) : 1
②Number(false) : 0
二、正则表达式
http://www.runoob.com/jsref/jsref-obj-regexp.html
三、异常
异常是导致程序停止运行的错误代码。
1.一般结构
try{
}catch(error){
//自定义异常
if(...) {
throw "错误哦!";
}
}finally{
}
四、JavaScript的变量提升
所谓的变量提升,其实就是js在加载js代码的时候,会将所有的声明变量全部提升到js最顶部。
1.代码演示
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
var y = 6;
x = 5;
alert("x = " + x + " y = " + y);
var x = 5;
</script>
</head>
<body>
</body>
</html>
演示结果:可以看到,声明在最前还是在最后,都能达到声明的效果。
2.变量提升不是初始化提升(初始化必须在使用之前进行)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
var x,y;
x = 5;
alert("x = " + x + " y = " + y);
y = 6;
</script>
</head>
<body>
</body>
</html>
演示结果:可以看到初始化,还应在使用前进行
注意:js官方指定,即使拥有变量提升,但是声明最好还是在js的最顶端进行,这样才符合最为规范的编码方式。
五、严谨模式(use strict)
1.严谨模式只能声明在js和函数的顶部
2.严谨模式下不能展示变量提升,因为严谨模式是对编码的一种规范,为了更好的适应新版本的js
3.使用实例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
"use strict";
x = 6; //报错
alert(x);
var x;
</script>
</head>
<body>
</body>
</html>
演示结果:
4.支持浏览器
六、表单验证
1.前台不进行方法验证,使用表单验证
例子:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<form method="post" action="demo-form.php" name="myform">
<input type="text" name="username" required="required"/>
<input type="submit" value="提交" />
</form>
</body>
</html>
演示结果:
2.前台方法进行验证
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
//验证是否为空
function validateUserName(){
var result = document.forms["myform"]["username"].value;
alert(result);
if(result == null || /^\s*$/.test(result)){
alert("不能为空");
return false;
}
return true;
}
</script>
</head>
<body>
<form method="post" action="demo-form.php" onsubmit="validateUserName()" name="myform">
<input type="text" name="username" required="required"/>
<input type="submit" value="提交" />
</form>
</body>
</html>
演示结果:
3.后台验证,直接动过action进行后台校验。
七、JavaScript中 this 关键字
1.在函数中,指的是window
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
var x= 9;
function test(){
alert(this);
}
</script>
</head>
<body>
<button onclick="test()">test</button>
</body>
</html>
演示结果:
2.在对象中,this 是对象
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
var obj = {
"name":"kuniun",
myFunction:function(){
return this;
}
}
alert(obj.myFunction());
</script>
</head>
<body>
<button onclick="test()">test</button>
</body>
</html>
演示结果:
3.在句柄中,this是该标签对象
<body>
<button onclick="this.style.color='red'">test</button>
</body>
演示结果:
之前: 之后:
4.在Js中指的是window
<script>
alert(this);
</script>
5.在严格模式下,指的是undefined
<script>
"use strict";
alert(this);
</script>
七、Function和箭头函数的区别
1.function函数中的this指的是调用的主体
<script>
var obj = {
"name":"kuniun",
myFunction:function(){
return this;
}
}
alert(obj.myFunction());
</script>
演示结果:这里的主体是obj
2.箭头函数中的this始终指的是Windows
<script>
var obj = {
"name":"kuniun",
myFunction:() => {
return this;
}
}
alert(obj.myFunction());
</script>
演示结果:Windows
八、JavaScript Let 和 Const
1.var的缺点
①全局变量可以对其再次声明 and 赋值
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
var x= 10;
{
var x = 2;
}
document.write(x);
</script>
</head>
<body>
</body>
</html>
演示结果:显示最后一次赋值的值,不管在代码块还是全局
2.let的块级作用区域
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
var x= 10;
{
let x = 2;
}
document.write(x);
</script>
</head>
<body>
</body>
</html>
演示结果:使用了let 声明的变量只适用于代码块内,代码块外则无效
3.const 常量修饰符
const修饰的变量是不能被修改的,但是内容是可以修改的。const和let一样是块级的,所以在不同的级别中声明是没有问题的。
①const修饰的是常量,声明的时候就要赋值
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
const x= 10;
{
x = 12;
}
document.write(x);
</script>
</head>
<body>
</body>
</html>
演示结果:
②内容是可以修改的,是因为const修饰的是地址,那么对象的话地址不变,属性是可以改变的
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
const x= {
"name":"kunkun",
"age":12
};
{
x.name="kunshao";
}
document.write(x.name);
</script>
</head>
<body>
</body>
</html>
演示结果:之前声明的时候是kunkun,之后修改成kunshao。说明const修饰的是地址,而非值
③const和let一样是块级的,所以在不同的级别中声明是没有问题的。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
const x= {
"name":"kunkun",
"age":12
};
{
const x= {
"name":"kunshao",
"age":13
};
}
document.write(x.name);
</script>
</head>
<body>
</body>
</html>
演示结果:
4.注意声明顺序
①let或者const 全局声明,那么var就不能再次声明,不管是不是在代码块中
②let const var,在同一级别的作用域中不能同时声明一个变量
九、JavaScript 中的JSON
①json转Javascript对象 JSON.parse()
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
var text = '{ "sites" : [' +
'{ "name":"Runoob" , "url":"www.runoob.com" },' +
'{ "name":"Google" , "url":"www.google.com" },' +
'{ "name":"Taobao" , "url":"www.taobao.com" } ]}';
var result = JSON.parse(text);
document.write(JSON.stringify(result.sites[0]) + " " + JSON.stringify(result.sites[1]) + " " + JSON.stringify(result.sites[2]));
</script>
</head>
<body>
</body>
</html>
演示结果:
②JavaScript对象 转 json字符串 JSON。stringify()
上面的例子已经给出了对象转json字符串了,否则页面上输出对象的形式是[Object Object]
十、javascript:void(0) 含义
1.javascript:void(0) 是一个死链接,点击之后没有效果
2.javascript:void(alert("ddddd")) 点击之后弹出提示框
3.javascript:void() 指的是返回为空,也就是undefined
4.href="javascript:void(0)"与 href="#"区别
①javascript:void(0)就是一个死链接,点击没有效果
②href="#"点击会回到该页面,如果#id那么点击之后,会出现跳转的效果。如:回到顶部
JavaScript基础学习已经结束,接下来是js函数学习,继续加油。学完js就可以搞一个小项目,熟悉熟悉!