前端之JS引入方式语言基础和规范变量声明数据类型数值类型(Number)字符串(String)布尔值(Boolen)数组运算符流程控制函数arguments参数
前端之JavaScript
前面我们已经学习了HTML和CSS,制作网页的三大利器现在就剩一个JavaScript,下面简单介绍以下Js的一些基本用法.
JavaScript其实是一种轻量级的脚本语言,所以其本质上是不同于html和css的,它是可以直接插入html页面的编程代码,且几乎兼容于现代的所有浏览器.其实作为一个编程语言来讲,Js真的是难度非常低,而且功能非常强大的语言,一旦有别的编程语言的基础的的情况下,可以很快的上手Js,所以对于我们来说非常的方便.
至于用什么方式编写js代码,这个仁者见智,不过做实验,只是测试用的话,推荐用网页的console窗口,就是随便打开一个浏览器,按F12,找到Console的标签,然后在下面测试以下代码即可.回车即可自动执行代码,然后shift+回车可以换行.
引入方式
JavaScript的引入方式通常有两种:
x
1.
<script>中间写js代码</script>
2.可以直接导入额外的js文件
<script src = "***.js"></script>
语言基础和规范
变量声明
变量的声明都是相似的,即:
- 变量名可以使用字母,数字,_等组成,但不能以数字开头
- 变量名区分大小写,且常用驼峰式(Python里常用下划线式)
- 一些保留字不能做变量名,也就是系统保留的那些,像byte,char ,double,short,long等等很多.
js的不同之处就在于需要多一个var关键字,仅此而已.
xxxxxxxxxx
var name = "nick";var age = 18;
数据类型
数值类型(Number)
x
var a = 12.03;
var b = 20;
var c = 2323e3;
var d = 234e-4;
# 以上这些都是数值类型,也就是说js里面不分浮点型或者整型,统一都是number类型,当然还有一种叫做NaN,全称是Not a Number ,表示其不是数值类型
字符串(String)
常见双引号包裹的内容都可以叫做是字符串类型,字符串类型可以直接用+拼接在一起
xxxxxxxxxx
var a = "ni ";
var b = "hao";
var c = a + b;
c
ni hao
# 字符串类型的常用内置函数有以下几种:
.length 返回字符串的长度
.trim() 移除字符串中的空白
.charAt(n) 返回字符串的第几个字符,第一个索引为0
.concat(value, ) 拼接,这种方法更规范,实际上直接用+也可以
.substring(start,end) 根据索引获取一定长度的子序列
.slice(start,end) 切片,按照索引的起始位置切片,顾头不顾尾
# 实际上.substring和.slice的实际用法比较相似,但有细微的不同,具体如下:
在.substring里面,如果start>end,两者会被交换,但.slice里面不会
在.slice里面,如果start小于0,会从字符串尾部开始取字符,但是.substring没有这个判定
布尔值(Boolen)
js的布尔值和Python不同,都是小写,并非首字母大写.
xxxxxxxxxx
var a = true;
var b = false;
# 另外,空字符串,0,null,undefined,NaN,都是false
# 但是这些值并不是本身是false,而是他们的布尔值是false,所以测试验证的时候要这么写:
var c = null;
Boolean(c) == false;
# 结果为true
# 而不能直接写
c == false;
# 这样的结果是false
数组
js中的数组极大程度的相似于Python中的列表,各种属性都很相似,但是它叫数组,不叫列表,这点在我们做后端的时候,如果和前端交流要注意,他们可能听不懂列表这个说法.
xxxxxxxxxx
var a = [1,2,3,4,5,6,7]
a[0]
# 结果为1,可以直接用索引来取数组里面的值
# 数组的常用内置函数为:
.length 返回数组的大小
.push() 可以在数组的尾部追加元素
.unshift() 可以在数组的头部插入元素
.slice(start,end) 切片
.reverse() 反转整个数组
.forEach() 可以将数组的每个元素传递给回调函数
.splice() 删除元素,并且可以向数组添加新元素
.map() 返回一个数组元素调用函数处理后的值的新数组
# forEach()
forEach(function(currentValue,index,arr))
currentValue是当前的元素值
index是当前元素的索引值
arr则是当前元素所属的数组
var arr = [12,13,14,15]
arr.forEach(function(value){
console.log(value)
})
# splice()
splice(index,howmany,item1, ,itemX)
index 是需要插入元素的索引位置,必须是数字
howmany 删除多少位的元素,如果是0,就会删除从索引位置之后的所有元素
item1,itemX 是要添加到数组的新元素
# map()
map(function(currentValue,index,arr))
currentValue 当前元素的值
index 是当前元素的索引值
arr 当前元素所属于的数组对象
arr = [12,13,14,15]
arr.map(function(value,index,arr){
return value+10
})
arr
# 结果为[22,23,24,25]
运算符
运算符包括算术运算符,比较运算符,逻辑运算符,赋值运算符.
xxxxxxxxxx
# 算数
+ - * / % ++ --
# 比较
> >= < <= != == === !==
js里面存在弱等于==和强等于===,强等于就是两个值要完全相等,包括值,格式等等,弱等于的范围就比较宽泛,比如
1 == "1" 为true 1 === "1"就为false
# 逻辑
&& || !
# 赋值
= += -= *= /=
流程控制
js里面流程控制所用到的东西和python相似,就是if-else和while,for ,三元运算,另外多一个switch,只是具体的写法会有些许的区别,和C语言比较相似.
xxxxxxxxxx
# if else
var a = 2;
if (a>1)
{
console.log("You are right")
}
else if (a >0)
{
console.log("You are right maybe")
}
else
{
console.log("You are wrong")
}
# switch
var day = new Date().getDay();
switch (day){
case 0:
console.log("Sunday");
break;
case 1:
console.log("Monday")
break
default:
console.log("...")
}
# 这里要注意,用switch的情况下,case语句的后面一定要加break,否则程序会把后面的语句全都执行完
# for
for (var i = 1;i < 19;i++){
console.log(i);
}
# while
var i = 0;
while (i<10){
console.log(i);i++;
}
# 三元运算
var a = 10;
var b = 20;
var c = a>b ? 1:2
上面的三元运算的意思就是,a如果大于b,c就会被赋值1,如果a不大于b,c会被赋值2
函数
JavaScript里面的函数也跟Python极其相似,只是定义方式不同.
xxxxxxxxxx
function f1(a,b){
console.log("ni hao");
console.log(a,b)
return a+b
}
# 匿名函数的定义方式
var a = function(a,b){
return a-b;
}
arguments参数
JavaScript中函数里的内置参数arguments可以将传出的参数全部包含,示例如下:
xxxxxxxxxx
function add(a,b){
console.log(a+b);
console.log(arguments.length);
console.log(arguments[0]);
# 这里arguments就可以包含传出的所有参数,[0]则可以取其第一个值
}
add(1,2)
# 要注意的一点是,JavaScript的函数里面不能同时返回多个值,如果需要返回多个值,只能将其放在数组或者对象中返回