0
点赞
收藏
分享

微信扫一扫

前端三件套之JS(1) 基础语法

目录

什么是JS

JS的编码方式

内部样式

外部样式

行内样式

JS的输入输出

1:输入

2:输出

变量

运算符

加法

除法

逻辑结构

循环结构

数组

函数

函数传参

函数返回return

arguments


什么是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);

 

举报

相关推荐

0 条评论