<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
/*
alert():控制浏览器弹出警告框
document.write():在计算机页面中body输出内容
console.log():向控制台输出内容
*/
alert("警告框,biubiu");
document.write("测试实验");
console.log("控制台输出");
</script>
</head>
<body>
<!--
代码可以放在onclick标签中,也可以放在在超链接的href中,还可以放在外部js文件
-->
<button onclick="alert('放置在onclick标签的代码');">标签</button>
<a href="javascript:aletr('js代码写在超链接的href中');">点击一下</a>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
/*
多行注释 单行注释 //
1. js严格区分大小写
2. js语句以分号结尾
3. js忽略多个空格和分号
*/
</script>
</head>
<body>
</body>
</html>
字面量和变量
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
/*
字面量:不可变值
变量:可以任意改变的值
声明变量:使用var来声明
注:语法 var a = 10;
标识符:由自己定义的符号称为标识符
例:变量名,函数名,属性名
1. 标识符可以含有数字,字母,"_"等
2. 不能以数字开头
3. 不能和关键字冲突
4. 采用驼峰命名
*/
</script>
</head>
<body>
</body>
</html>
数据类型
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
/*
基本数据类型:
String 字符串
Number 数值 js浮点计算不准确
Boolean 布尔值 ture false
null 空值
undefined 未定义
引用数据类型: object 对象
typeof 变量 检查数据类型
infinite 无穷
NaN 特殊数字,not a num
当声明变量却不赋值时,则是undefined
*/
/*
转换str数据类型:1. 变量.toString();
2. 调用String函数
转换num数据类型: 1. 调用Number函数
2. 调用parseInt 将字符串的有效整数提出
调用parseFloat 将字符串的整数,小数提出
转换Boolean数据类型: 1. 调用Boolean函数
*/
var str = "nothing";
var a = 666-555;
a = a.toString(); // 将a转换成为字符串类型
var b = 2*5;
b = String(b)
console.log(typeof b)
/*
js中,以0x或0开头后跟进制数字,如0x10;0xff;035(注:八进制)
*/
</script>
</head>
<body>
</body>
</html>
逻辑运算符
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var a = 1 && 2;
var b = 2 && 1;
var c = 5 || 6;
console.log(a);
console.log(b);
console.log(c);
</script>
</head>
<body>
<!--
js中的逻辑运算符: || 或 ; && 与; ! 非
当对非布尔值运算时,先转换成布尔值,再计算:
如:对任意数据取反两次,则会转换成为布尔值
对于非布尔的与计算,若两个值都是true,则返回后者,第一个值是false,则返回第一个值
对于非布尔的或计算,两第一个值是true,则返回前者,第一个值为false,则返回第二个值
对于非数字的关系运算符比较,若是字符串,则是比较其Unicode编号大小,且是一位一位轮流比较
在字符串中使用转义字符输入Unicode编码。 例:\u转义字符码
在网页中使用。 例:&#转义字符码;
js中,有 ==(相等);!=(不等);===(全等) ; !==(非全等)
区别:全等和非全等不会转换字符串类型判断,
-->
</body>
</html>
三元运算
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
/*
条件表达式?语句1:语句2;
条件表达式成立,则执行语句1,否则执行语句2
*/
</script>
</head>
<body>
</body>
</html>
流程控制
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
/*
语句:1. 条件判断语句 2. 条件分支语句 3. 循环语句
if语句:语法1
if(条件表达式){
语句...
}else{
语句...
}
语法2:
if(条件表达式){
语句1...
}else if(){
语句2...
}else if()...{
语句...
};
条件分支语句:
switch语句:语法
switch(条件表达式){
case 表达式:
语句...
break;
case 表达式:
语句...
break;
default:
语句...
break;
};
循环语句:
while语句: 语法 // 先判断条件表达式,再执行循环体
while(条件表达式){
语句...
};
do...while语句: 语法 // 先执行循环体,再判断条件表达式
do{
语句...
}while(条件表达式);
for语句: 语法
for(①初始表达式; ②条件表达式;④ 更新表达式){
③语句...
}
*/
</script>
</head>
<body>
</body>
</html>
break和continue
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
/*
brake关键字一般不用在for循环
可为循环语句设置一个label:标识当前循环,并且使用break:label终止
continue关键字可用跳过当前循环,
console.time("计时器名字") 用来开启计时功能
console.timeEnd("计时器名字") 计算时间
js中用math.sqrt() 引入平方根,和Python中相比有点麻烦
*/
</script>
</head>
<body>
</body>
</html>
对象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
/*
js中利用new Obeject来构建对象
向对象中添加属性值:语法 对象.属性名 = 属性值
注:可使用[变量名]创建部分异常的属性名
利用 "属性名" in 判断属性名是否存在
var a = 10;
a++
var b = a;
console.log(a);
console.log(b);
js中变量保存在栈中,基本数据类型直接在栈中存储,且相互独立,
-----
对于对象
对象是保存在堆内存中,创建对象即在堆内存创建空间,变量保存的是对象的内存地址,即变量可以通过指针引用数据
*/
var info = new Object();
info.name = "小明";
info.age = 18;
console.log(info);
/*
利用对象字面量创建对象
语法:{属性名:属性值,...}
*/
var obj = {name:"李四",
age:18,
id:001};
</script>
</head>
<body>
</body>
</html>
函数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
/*
函数:封装功能
语法:var c = new Function()
调用函数: c();
*/
/*
函数声明创建函数:
语法:
function 函数名([形参1,形参2,...]){
语句...
}
*/
function test(){
console.log("测试");
alert("真的比Python麻烦");
}
test();
function test1(a, b){
var d = a + b;
return d;
}
var result = test1(10,30);
console.log("result = "+ result);
/*
立即执行函数:往往只执行一次
例: (function(a,b){
alert("匿名函数");
}(12,10));
*/
(function(a,b){
alert("匿名函数");
}(12,10));
</script>
</head>
<body>
</body>
</html>
全局作用域
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
/*
全局作用域中的全局对象是window
局部作用域可以访问全局作用域,反之不行,若要在函数中访问全局作用域,可以使用window.变量名
使用var关键字声明的变量,会使得声明提前
*/
</script>
</head>
<body>
</body>
</html>