- 世界上最流行的编程语言之一
- 是通过解释器运行的一个脚本语言
- 主要在客户端(浏览器)上运行,也可以基于node.js在服务器端运行
- 网页开发
- 网页游戏开发
- 服务器开发(基于node.js)
- 桌面程序开发(Electron,VSCode)
- 手机app开发
此处要注意:
JavaScript 和 Java 的关系,
就像雷锋和雷峰塔一样;
就像印度和印度尼西亚一样;
就像黑客和博客一样,莫有半毛钱关系噢~
但是JavaScript 和 CSS、HTML可是有非常大的关系,他们仨可以一起称为前端三剑客,可见其对于前端的作用。
HTML:网页的结构(骨)
CSS:网页的表现(皮)
JavaScript:网页的行为(魂)

浏览器分成渲染引擎和JS引擎:
渲染引擎:俗称内核,主要任务:解析html和CSS
JS引擎:即JS解释器,主要任务:读取JS代码,解析成二进制指令,执行指令。(典型:Chrome中内置的V8)
JS光有语法,只能写一些基础的逻辑流程,如果想要完成更复杂的任务,就需要DOM API 和 BOM API 来完成和浏览器以及页面的交互。(如果是运行在服务器端的JS,则需要使用node.js 的 API,与DOM 和 BOM 关系不大)
直接嵌入到html元素内部
<input type="button" value="点我一下" onclick="alert('haha')">
注:在JS中,字符串常量既可以使用单引号表示,也可以使用双引号表示。
html中推荐使用双引号,JS中推荐使用单引号
写到script标签中
<script>
alert("haha");
</script>
由于本文中使用的是比较简单的基础语法,故使用内嵌式更多。
即写到单独的,js文件中,在html中通过script来引入。适合与代码量较大的情况。
输入:prompt
输出:alert
<script>
// 弹出一输入框
prompt("请输入您的姓名:");
// 弹出一个警示输出框
alert("halle!");
</script>
注:后面的代码中就直接展示代码内容,不展示标签了。


前面弹窗的输出方式体验不好,作为程序员,我们当然要给自己开一个特别的后台,即控制台,因此我们也可以用过控制台输出的方式来查看输出。
输出:console.log
//向控制台输出日志
console.log("这是一条日志");
保存项目后,在浏览器中打开开发者工具(或者按“F12”快捷键),出现如下界面:
·
选中控制台,就能看到输出啦~

console是js中的一个“对象”,即控制台对象
.表示取对象中的某个属性或者方法,可以理解为“的”
这里的console.log就可以理解成为:使用控制台对象的log方法
虽然JavaScript和Java是两个东西,但是在语法层面上还有一些相似之处,因此本文主要是基于Java的基础来讲解JavaScript,主要讲JavaScript中不同于Java的内容,相同点就不再赘述了。
//创建变量
var name = 'zhangsan';
var age = 20;
var是js中用于定义变量的关键字
‘=’表示赋值
最后的分号;可以省略
若初始化的值是字符串,则需使用单引号或双引号
console.log(age);//读取变量内容
age = 30;//修改变量内容

示例:
var name = prompt("请输入姓名:");
var age = prompt("请输入年龄");
var score = prompt("请输入分数");
alert("您的姓名是:" + name + "\n" +
"您的年龄是:" + age + "\n" +
"您的分数是:" + score + "\n");

从上面的代码中,可以看到,js中并没有对整型、浮点型、字符串等类型分别使用不同关键字进行定义,而是使用同一个关键字var,因为js中的类型属于动态类型。
js中的变量类型是程序在运行过程中才确定的。并且随着程序的运行,变量的类型可能会发生改变。
var a = 10;//数字
a = "hehe";//字符串
js中的几种内置类型:
var a = 07;//八进制整数 - 以0开头
var b = 0xa;//十六进制整数 - 以0x开头
var c = 0b10;//二进制整数 - 以0b开头
一个八进制数字对应三个二进制数字
一个十六进制数字对应四个二进制数字
var max = Number.MAX_VALUE;
console.log(max*2);
console.log(-max*2);
console.log('hehe'-20);

如果一个变量没有被初始化过,则其结果的就是undefined,类型也为undefined类型。
var a;
console.log(a);
console.log(a + "10");//与字符串拼接
console.log(a + 10);//与数字运算

null表示当前的变量是一个“空值”
var b = null;
console.log(b + 10);
console.log(b + "10");

null和undefined都表示取值非法的情况,但是侧重点不同:
null表示当前的值为空(相当于有一个空的盒子)
undefined表示当前变量未定义(相当于连盒子都没有)
//创建数组
var arr = new Array();
//使用字面量方式创建
var arr1 = [];
var arr2 = [1, 2, 'haha', false];//数组中的内容称为“元素
//js中的数组不要求元素是相同类型
//使用下标的方式访问数组元素(从0开始)
var arr3 = ['小猪佩奇', '小猪乔治', '小羊苏西'];
console.log(arr3);
console.log(arr3[0]);
console.log(arr3[1]);
console.log(arr3[2]);
arr3[2] = '小猫凯迪';
console.log(arr3);
console.log(arr3[3]);//undefined
console.log(arr3[-1]);//undefined

//通过修改length新增
//相当于在末尾新增元素,新增的元素默认值为undefined
var arr = [9, 5, 2, 7];
arr.length = 6;
console.log(arr);
console.log(arr[4], arr[5]);
//通过下标新增
//如果下标超出范围赋值元素,则会给指定位置插入新元素
var arr2 = [];
arr2[2] = 10;
console.log(arr2);
//使用push进行追加元素
arr2.push(3);
console.log(arr2);

//使用splice方法删除元素
var arr = [9, 5, 2, 7];
//从下标为2的位置开始,删除1个元素
arr.splice(2, 1);//参数分别表示:删除的起始位置,删除的元素个数
console.log(arr);

定义格式:
function 函数名(形参列表) {
函数体
return 返回值;
}
调用格式:同Java
函数的定义和调用对先后顺序没有要求。
实参和形参之间的个数可以不匹配。(但是实际开发中一般要求形参和实参个数匹配)
在js中,字符串、数值、数组、函数都是对象,每个对象中包含若干的属性和方法
属性:事物的特征
方法:事物的行为
JavaScript 的对象和 Java 的对象在概念上基本一致但是具体的语法表现形式差别较大。
var a = {};//创建了一个空的对象
var student = {
name: '蔡徐坤',
height: 175,
weight: 170,
sayhello: function() {
console.log("hello");
}
};
- 使用{ }创建对象
- 属性和方法使用键值对的形式来组织
- 键值对之间使用,分割,最后一个属性后面的,可有可无
- 键和值之间使用:分割
- 方法的值是一个匿名函数
使用对象的属性和方法:
//1.使用.成员访问运算符来访问属性
console.log(student.name);
//2.使用[]访问属性,此时属性需要加上引号
console.log(student['height']);
//3.调用方法,记得机上()
student.sayhello();

2. 使用new Object 创建对象
var student = new Object();//和创建数组类似
student.name = "蔡徐坤";
student.height = 175;
student['weight'] = 170;
student.sayhello = function() {
console.log("hello");
}
console.log(student.name);
console.log(student['weight']);
student.sayhello();
基本语法:
function 构造函数名(形参) {
this.属性 = 值;
this.方法 = function() {
}
}
var obj = new 构造函数名(实参);
- 在构造函数内部使用this关键字来表示当前正在构建的对象
- 构造函数的函数名首字母一般是大写的
- 构造函数的函数名可以是名词
- 构造函数不需要return
- 创建对象的时候必须使用new关键字
- this 相当于“我”
最后来两道练习题,检查一下自己对JavaScript的语法的掌握情况,如果下面的两道题你都能轻松做出来,那么应该问题不大啦~~~~
var arr = [5, 4, 3, 2, 1];
function binarySearch(arr, val) {
var left = 0;
var right = arr.length - 1;
while(left < right) {
var mid = parseInt((left + right) / 2);
if (val == arr[mid]) {
return mid;
} else if (val < arr[mid]) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
console.log(binarySearch(arr,3));
console.log(binarySearch(arr,0));
//冒泡排序
function bubbleSort(arr) {
for (var i = 0; i < arr.length - 1; i++) {
var flg = false;
for (var j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
flg = true;
var tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
if (flg == false) {
return;
}
}
}
//快速排序
function pivotIndex(arr, start, end) {
var left = start;
var right = end;
var pivot = arr[left];
while ( left < right) {
while (left < right && arr[right] >= pivot) {
right--;
}
arr[left] = arr[right];
while (left < right && arr[left] <= pivot) {
left++;
}
arr[right] = arr[left];
}
arr[left] = pivot;
return left;
}
function quickSort2(arr, start, end) {
if (start == end) {
return;
}
if (start > end) {
return;
}
var i = pivotIndex(arr, start, end);
quickSort2(arr,start,i-1);
quickSort2(arr,i+1,end);
}
function quickSort(arr) {
quickSort2(arr,0,arr.length-1);
}
关于js的语法就介绍到这里啦~
以上的叙述很简略,因为js的语法和Java还是有很多相似之处的,相同的地方本文就不再赘述了。作为一名后端猿,有更多不清楚的地方,咱们即用即查就行啦~~~~
前段时间因为学业繁忙,把博客落下了很多,现在写博客更多作为巩固和记忆,如果有写得不好的地方,请各位大佬轻喷,我会继续努力的!
如果文章对你有帮助,记得一键三连,让我看到你哦~~~~
