一、Javascript简介
作为开发Web页面的脚本语言而出名,在前端和后端都有广泛应用。而且它可以之间在浏览器的控制台进行编写然后运行,也可以独立作为一个js文件,然后在html文件当中引用,也可以由Node.js进行解释然后运行。
二、基本语法
-
大小写敏感
Javascript对大小写敏感,我们在定义变量时,通过大小写来定义不同的变量,使自己不容易忘记变量的含义 -
标识符
在Javascript当中,第一个字符只能为字母、下划线、美元符号(一般和钱相关的才用) -
注释
单行注释://
多行注释:/*
开始,*/
结尾 -
语句
在一个语句后面,我们可以像C一样添加;
来进行隔开,但是也不是必要的 -
保留字
与大多数编程语言一样也有保留字,一般有break;do;if;with;case等等,在定义变量或函数名时可以先查阅一下 -
变量
在Javascript当中的变量是松散的,就是可以存放任何类型,定义变量时使用var
,后面加上变量名
如果在函数中使用 var 定义一个变量,那么这个变量在函数退出后就会被销毁(局部的)
如果在定义变量时没有赋值,那么其值就是undefined
三、操作符
- 一元操作符
++
:自增
--
:自减 - 布尔运算符
&&
:逻辑与
||
:逻辑或
!
:逻辑非 - 算术操作符
+、-、*、/、%
(不做过多解释) - 关系操作符
<>
<=>=
==
!=
!==
===
- 条件操作符
? - 赋值操作符
=
+=
-+
*=
/=
%=
四、语句
没啥特别的,与其他编程语言类似,例如if;while;for;break;switch;continue
等等
五、函数function
任何一个语言的函数都是非常重要的,例如C(由函数构成),Javascript也不例外。这里就不再介绍函数的作用以及使用方式了。
函数语法:
function name(参数 1, 参数 2, 参数 3) {
要执行的代码
}
六、对象Object
与C++相似,我们常将数据和方法封装在对象当中。
创建对象的方式:
//方式一new
var person = new Object();//生成空对象
person.name = 'Elon Musk';//设置对象的属性
person.age = 46;
person.job = 'SpaceX Rocket';
person.sayName = function(){ //设置对象的方法/函数,注意此处
console.log(this.name);
};
//方式二字面量
var person = {
name: 'Lary Page',
age: 47,
job: 'Software Engineer',
sayName: function(){ //注意此处
console.log(this.name);
}
};
console.log(person.job);
person.sayName();
七、数组Array
同样的,Javascript当中也有数组,不过与其他语言当中的数组是天差地别,在Javascript当中的数组的每一项都可以用来保存任何类型的数据(当然是不推荐这样做的),而不像C一样要求严格的数据类型相同,并且其数组的大小是可以动态的调整的,随着数据添加而增大数组容量。
创建数组方法:
//方式一new
var colors = new Array('red', 'blue', 'green');
//方式二字面量
var colors = ['red', 'blue', 'green']; // 创建一个包含 3 个字符串的数组
console.log(colors[1]);
colors[3] = 'brown';
console.log(colors.length);
var names = []; // 创建一个空数组
var hyBird = [1, 2, 'haha', {firstName: 'Yong', lastName: 'Wang'}]; //不推荐!
console.log(hyBird[3].firstName);
常用的数组方法:
-
元素联合
-
堆栈方法
有push
和pop
两种方式
pop
:移除数组末尾的最后一项
push
:依次放入数组末尾 -
队列方法
有shift
和unshift
两种方式
shift
:移除第一项,并返回
unshift
:在第一项前再加一项 -
反转数组项
-
链接方法
-
分片方法
有slice
和splice
两种方式
slice
:不影响原始数组,在数组当中的一个或多个项中创建一个新数组
splice
:直接更改原始数组,进行删除、插入、替换等操作
八、链式句法
在Javascript当中,想要实现链式句法很简单,只需要让每个函数返回this
代表包含该函数的对象,这样其他函数就可以立即被调用了
//链式语法
var bird = {//定义对象字面量
catapult: function() {
console.log( 'Yippeeeeee!' );
return this;//返回bird对象自身
},
destroy: function() {
console.log( "That'll teach you... you dirty pig!" );
return this;
}
};
bird.catapult().destroy();//destroy()后还可以再链接吗?
九、闭包
闭包就是:函数的局部变量集合,只是这些局部变量在函数返回后会继续存在。当在一个函数内定义另外一个函数就会产生闭包(Closure),
举例:
function greeting(name) {
var text = 'Hello ' + name; // local variable
// 每次调用时,产生闭包,并返回内部函数对象给调用者
return function() { console.log(text); }//注意该函数无名称,称为匿名函数
}
var sayHello = greeting('Closure');//调用greeting()返回了什么?
sayHello(); // 注意此处的使用方法。通过闭包访问到了局部变量text
在函数greeting执行后,又返回了函数匿名函数,但是该匿名函数可以访问到greeting函数当中的text变量,所以该代码的运行结果就应该为:Hello Closure
总结
通过JavaScript的学习,我了解到了其强大之处。Javascript的语法相对来说没有那么严格,可以说是相当松散了,但是其也存在一定弊端,对新手及其不友好,在编写代码时,时不会有错误提示你的,但是在程序运行后,才会有错,初入的人可能会感到一头雾水。