今天来复习一下js基础,也写给刚入门的同学
前言
JavaScript 是一门跨平台、面向对象的脚本语言,它能使网页可交互(例如拥有复杂的动画,可点击的按钮,通俗的菜单等)。另外还有高级的服务端 Javascript 版本,例如 Node.js,它可以让你在网页上添加更多功能,不仅仅是下载文件(例如在多台电脑之间的协同合作)。在宿主环境(例如 web 浏览器)中,JavaScript 能够通过其所连接的环境提供的编程接口进行控制。
JavaScript 借鉴了 Java 的大部分语法,但同时也受到 _Awk,Perl_ 和 _Python_的影响。
与 Java 和c++相比,Javascript 是一门形式自由的语言。你不必声明所有的变量,类和方法。你不必关心方法是否是公有、私有或者受保护的,也不需要实现接口。
JavaScript 内置了一些对象的标准库,比如数组(Array
),日期(Date
),数学(Math
)和一套核心语句,包括运算符、流程控制符以及声明方式等
一、 JavaScript变量
JavaScript 变量是 存储数据值的容器
1.1 变量的声明(创建变量的方式)
通过var 变量名的方式声明
var name
- 变量必须以字母开头
- 变量也能以 $ 和 _ 符号开头
- 变量名称对大小写敏感
1.11 赋值方式
通过=赋值
name= 'xxx'
也可以在变量声明时对齐赋值
var name='xxx'
还可以通过变量对变量赋值
var x=1
var y=x+1
1.2 变量提升
你可以先使用变量稍后再声明变量而不会引发异常。这一概念称为变量提升;
console.log(x)
var x
1.3 JavaScript数据类型
七种基本数据类型:
- 布尔值(Boolean),有 2 个值分别是:
true
和false
. - null,一个表明 null 值的特殊关键字。在布尔运算中被认为是flase
- undefined,和 null 一样是一个特殊的关键字,undefined 表示变量未赋值时的属性。
- 数字(Number),整数或浮点数。
- 任意精度的整数 (BigInt) ,可以安全地存储和操作大整数,甚至可以超过数字的安全整数限制。
- 字符串(String),字符串是一串表示文本值的字符序列。
- 代表(Symbol)( 在 ECMAScript 6 中新添加的类型).。一种实例是唯一且不可改变的数据类型。
- 布尔值(Boolean),有 2 个值分别是:
二、 JavaScript基础语法
包括了赋值,比较,算数,位运算,逻辑,字符串,三元等等。
1.1 算数运算符
运算符 | 用途 | 例子 |
---|---|---|
+ | 加法 | x=y+2 |
- | 减法 | x=y-2 |
* | 乘法 | x=y*2 |
/ | 除法 | x=y/2 |
% | 取余 | x=y%2 |
++ | 自增 | x=++y x=y++ |
-- | 自减 | x=--y x=y-- |
** | 指数 | x=y**3 |
1.2 赋值运算符
运算符 | 例子 |
---|---|
= | x=y |
+= | x+=y |
-= | x-=y |
*= | x*=y |
/= | x/=y |
%= | x%=y |
1.3比较运算符
作用: 比较它的操作数并返回一个基于表达式是否为真的逻辑值.
在多数情况下,如果两个操作数不是相同的类型,JavaScript 会尝试转换它们为恰当的类型来比较。
1.4逻辑运算符
运算符 | 范例 | 描述 | ||
---|---|---|---|---|
逻辑与 | expr1 && expr2 |
当操作数都为 true 时返回 true;否则返回 false. | ||
逻辑或 | `expr1 | expr2` | 当任何一个操作数为 true 则返回 true;如果操作数都是 false 则返回 false。 | |
逻辑非 | !expr |
如果操作数能够转换为 true 则返回 false;否则返回 true。 |
1.5条件(三元)运算符
条件 ? 值 1 : 值 2
var status = (age >= 18) ? "adult" : "minor";
当 age 大于等于 18 的时候,将“adult”赋值给 status;否则将“minor”赋值给 status。
2.语句
2.1 条件语句
· if 语句
只有当指定条件为 true 时,该语句才会执行代码。
if ()
{}
else
{}
if ()
{}
else if ()
{}
else
{}
2.2 switch 语句
switch(n)
{
case 1:
执行代码块 1
break;
case 2:
执行代码块 2
break;
default:
与 case 1 和 case 2 不同时执行的代码
}
2.3 for循环
一个 for
循环会一直重复执行,直到指定的循环条件为 false。JavaScript 的 for 循环,和 Java、C 的 for 循环,是很相似的。一个 for 语句是这个样子的:
for(i=0;i<9;i++)
{
console.log(i)
}
2.3.1 for循环扩展
for...in
循环遍历的结果是数组元素的下标,而 for...of
遍历的结果是元素的值
let arr = [3, 5, 7];
arr.foo = "hello";
for (let i in arr) {
console.log(i); // 输出 "0", "1", "2", "foo"
}
for (let i of arr) {
console.log(i); // 输出 "3", "5", "7"
}
2.4 while循环
一个 while 语句只要指定的条件求值为真(true)就会一直执行它的语句块。
while (条件)
{语句块}
2.5 do...while循环
该循环至少会执行一次,即使条件为 false 它也会执行一次,因为代码块会在条件被测试前执行
do
{}
while ();
2.6 跳出循环
- break 语句
- 使用 break 语句来终止循环,
switch
,或者是链接到 label 语句。
for(i=0;i<9;i++)
{
console.log(i);
if(i == 3)
{
break;
}
}
有些时候我们会循环嵌套循环,可以使用label去标识一个循环,后通过break跳出循环
var num = 0;
outPoint:
for(var i = 0; i < 10; i++) {
for(var j = 0; j < 10; j++) {
if(i == 5 && j == 5) {
break outPoint;
}
num++;
}
}
console.log(num)
3. 函数
3.1 函数的声明
function square(number) {
return number * number;
}
3.1 函数表达式
虽然上面的函数声明在语法上是一个语句,但函数也可以由函数表达式创建。这样的函数可以是匿名的;它不必有一个名称。
const square = function(number) { return number * number; };
var x = square(4);
然而,函数表达式也可以提供函数名,并且可以用于在函数内部代指其本身。
const factorial = function fac(n) {return n<2 ? 1 : n*fac(n-1)};
console.log(factorial(3));
3.2 调用函数
定义一个函数并不会自动的执行它。调用函数才会以给定的参数真正执行这些动作。
函数一定要处于调用它们的域中,但是函数的声明可以被提升 (出现在调用语句之后)
square(8)
function square(number) {
return number * number;
}
函数提升仅适用于函数声明,而不适用于函数表达式
函数可以被递归,就是说函数可以调用其本身
3.3函数作用域
在函数内定义的变量不能在函数之外的任何地方访问,因为变量仅仅在该函数的域的内部有定义。
var num1 = 20
function somenum() {
var num2=30
}