目录
什么是JS
js是JavaScript的简称,但是要注意,JS和Java是两种不同的编程语言。
还是那句话:把前端三件套比作一个人,那么,html就是人的骨头框架,css就是衣服裤子等装饰物,JavaScript就是给人编辑各种动作
既然是编辑动作了,那JS自然就少不了人机互动。例如像C语言的输入输出等等
JS是类似于C语言的一种代码(甚至可以用JS去ac题目)
在html文件中想要用JS语言进行修改,就要在<head></head>标签中添加<script></script>标签,而<script>之间即为JS语言
例如以下就是用JS打的一个输入a和b的值,输出a+b的值的JS代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var a=prompt();
var b=prompt();
alert(parseInt(a)+parseInt(b));
</script>
</head>
<body>
</body>
</html>
实际上JS基础部分和C语言类似,所以会C语言,再学JS就会轻松很多。
JS的编码方式
和css语言一样,JS也可直接打在html中,也可新建一个后缀为js的文件中,也可以直接打在标签内部。
内部样式
像上面图片的例子,这个就是内部样式。在<head>标签的<script>中
外部样式
和css类似,需要在html中<head>标签中打
<script src="xxxx"></script>
xxx即为js所在地址
行内样式
先学一个代码:alert(); 待会儿会细说,类似于C语言的printf();
那么行内样式就是这样的(说实话基本没啥人用行内式,主要是太单一了)
<input onclick="alert()">
JS的输入输出
1:输入
JS的输入只有一个:prompt(); 类似于C语言的scanf()。输入会在网页中弹出提示框
2:输出
JS的输出有两个。类似于C语言的printf();
(1) alert(); 输出会在网页中弹出提示框
(2)console.log(); 这个输出会在控制台中显示,按F12即可打开网页控制台。
变量
和C语言一样,JS也会有定义变量。
int a;
double b;
char c;
bool d;
但是,JS的变量定义没这么复杂,JS只有一个定义
var a;
这个var定义是自适应的,比如说变量a是整数,那么var就会自动适应为int类型。
变量a是浮点数,那么var就会自动适应成float类型。
但是要注意的是如果变量a是字符,那么他是会适应成C++的string的,而不是char。
这一点非常重要:如果是手动输入的变量值,假如输入是数字,var会自适应成string类型,而不是int类型或者float类型,假如输入true,同样也不会自适应成bool。
var a=prompt();
/* 就像这样,假设输入的是1
var是不会自适应成int
而是自适应成string
同样,如果输入1.1
var也是自适应成string
而不是flaot类型 */
那有没有方法可以将输入自适应的string类型,转化为我们想要的int float bool呢?
var a=prompt();//输入1
var b=prompt();//输入1.1
var c=prompt();//输入true
parseInt(a);//强转为int类型
parseFloat(b);//强转为float类型
Number(a);//强转为数字
Boolean(c);//强转为bool类型
String(a);//当然也可以强转为string类型
b.toString();//这个也是强转为string类型
运算符
和C语言一样,JS也有运算符 + - * / %等等。优先度也与C语言一样
例如什么+=,++ ,--,等等JS也是有的,以及?:三目运算符。
但是JS有个新的符号 === 或者 !== 这两个表示全等,即要求自适应的变量也要相同
这里要重点讲一下加法。
加法
由于var会自适应成string类型,所以加法也可用当作字符串的拼接。
var a='aaa';
var b='bbb';
console.log(a+b);
//输出aaabbb
var a=1;
var b=2;
console.log(a+b);
//输出3
但是由于上文提到,手动输入变量,是默认自适应成string类型的。
var a=prompt();//假设输入1
var b=prompt();//假设输入2
console.log(a+b);
//则系统会输出12.而不是3
但是减法乘法则不受影响。
除法
JS的除法和C不同,JS的除法是会保留小数的,不像C不保留小数。最多保留16位,类似于C语言的%s输出
逻辑结构
也就是if语句。没错,JS也有if语句
var a=2,b=1;
if(a>b) {
console.log("芜湖起飞");
}
那么自然结果也会输出"芜湖起飞"啦
if else嵌套什么的也和C语言类似,可以说一模一样。
循环结构
同样的,JS也有循环结构,也就是 while()循环,for()循环,do while()循环,switch 开关。
例如:
var a=2;
for(var i=1;i<=5;i++) {
console.log(a);
}
从理论上说,应该输出5个2,但实际上呢?如图所示
并没有输出5个2,而是输出⑤2(原理不知道,但只能说不能这么打代码)
那要怎么才能输出5个2呢。很简单,根据之前的加法原理,可以新定义一个变量b自适应成string,让b来累加a,最后输出b
var a=2,b='';
for(var i=1;i<=5;i++) {
b+=a;
}
console.log(b);
看看效果,成功。
至于其他的循环结构,除了不能在循环里输出(但是数组可以避免这个问题)有点麻烦,其余均和C语言类似(C语言狂喜)
数组
没错,JS也有数组。
JS的数组和C数组不同的是,JS的数组是动态的。比起这点它更像C++的vector。
JS的数组定义是这样的:
var a=[];//定义空数组
var a=[1,2,'aaa',true,1.2]//定义有长度的数组
可以发现,和C不同的是,JS定义数组不用再方括号里写数组大小。
并且由于var自适应,所以数组里的变量类型可是不是单一的。
var a=[];
a[0]=0;
a[1]=1;
空数组像这些写,数组就会自动扩展大小。就有点像vector,或者说链表。
当然,也可用手动增加数组的大小:先说一个函数。
这里和C语言类似,JS也有一个计算数组长度的函数length
var a=[];
a.length;//计算数组a长度的函数,和C类似(应该说C++吧)
那么手动增加数组长度就可以这样
var a=[];
a.length = 10;//即手动修改数组a长度为10
数组大致操作就是这样。(甚至可以利用JS像C语言这样写算法哦)
函数
JS肯定也是少不了函数的啦。
JS声明函数的关键字:function。
由于JS没有主函数,被调函数之分,所以直接在下面调用即可。
function f() {
console.log('呵呵呵');
}
f();//调用函数
函数传参
同样,函数的形参于实参也是自适应的,准确点应该说形参自适应。
和C语言不同的是,声明函数括号内不用打int xxx这种。直接打变量名就行
function f(a) {
console.log(a);
}
f('呵呵呵');
/* 格式:
function 函数名(形参) {
代码片;
}
函数名(实参)
*/
和C语言不同的,JS函数形参与实参的个数可以不匹配。
如果实参数目>形参,则形参有多少就自适应多少。
但是,如过形参>实参,若有其他还没有传递的形参在代码中,就会输出NaN
函数返回return
同样的,函数返回值也是自适应的。是int类型就返回int,是string类型就返回string。
arguments
arguments是个新概念,argument相当于一个数组,里面存储了函数的实参,当出现实参和形参数量不相同,就可以用arguments来获取。但是这个"数组''的功能并不全,比如没有push,pop等操作,只是单纯的存储工具,但有length的操作。
function f(a) {
console.log(arguments);
}
f(1,2,3);