JavaScript (简称 JS)
JavaScript 之父 布兰登 * 艾奇 (Brendan Eich)
<script>
alert("hello");
</script>
直接嵌入到 html 元素内部
<input type="button" value="点我一下" onclick="alert('你还真点')">
写到 script 标签中
<script>
alert("hello world");
</script>
写到单独的 .js
文件中
<script src='1.js'></script>
1.js代码
alert('hello');
**单行注释: ** //
**多行注释: ** /* */
// 单行注释
/*
多行注释
多行注释
*/
弹出一个输入框
<script>
let name = prompt("请输入你的姓名");
alert(name);
</script>
弹出一个警告框
<script>
alert('hello');
</script>
在控制台打印一个日志
<script>
console.log("这是打印日志的");
</script>
在浏览器中按
F12
====> 找到Console
窗口
这里就是显示日志的
.
表示取对象中的某个属性或者方法. 可以直观理解成 “的”. console.log
就可以理解成: 使用 “控制台” 对象 “的” log
方法username
和 userName
是两个不同的变量;
)作为语句结束的标记.let
和 var
的区别 参考文章: 具体文章 let a = 20;
let b = "helloworld";
let name = prompt("请输入你的姓名");
let age = prompt("请输入你的年龄");
let cl = prompt("请输入你的班级");
console.log(name);
console.log(age);
console.log(cl);
Java是一种静态类型,一旦开始定义了类型,后面就无法改变了
而JavaScript是动态类型,类型可以改变。
<script>
let a = 20; // 数值类型
console.log(a);
a = "helloworld"; // 字符类型
console.log(a);
</script>
JS 中 内置的几种类型
类型 | 描述 |
---|---|
number | 数字. 不区分整数和小数. |
boolean | true 真,false 假. |
string | 字符串类型. |
undefined | 只有唯一的值 undefin. 表示未定义的值. |
null | 只有唯一的值null.表示空值 |
JS 中是不区分整数和浮点数,统一都使用"数字类型"来表示
二进制: 以 0b
或 0B
开头
八进制: 以 0
开头
十六进制: 以 0x
或 0X
开头
<script>
// 十六进制 以 "0x" 或 "0X" 开头
let a = 0xff;
let b = 0X123;
// 八进制 以 "0" 开头
let c = 07;
// 二进制 以 "0b" 或 "0B" 开头
let d = 0b1010;
let e = 0B1111;
</script>
科学计数法的表示方法,在实数后面跟随字母e
或者E
,后面加上一个带正号或负号的整数指数,正号可以省略.
<script>
// 普通的浮点型
let a = 1.2;
let b = 6e3;
// 科学计数法的表示
let c = 7e+3;
let d = 8E-3;
</script>
Infinity
: 无穷大, 大于任何数字. 表示数字已经超过了 JS 能表示的范围.-Infinity
: 负无穷大, 小于任何数字. 表示数字已经超过了 JS 能表示的范围.NaN
: (Not a Number)表示当前的结果不是一个数字. <script>
let max = Number.MAX_VALUE;
// 得到 Infinity
console.log(max * 2);
// 得到 -Infinity
console.log(-max * 2);
// 得到 NaN
console.log('hehe' - 10);
</script>
字符串字面值需要使用引号引起来, 单引号双引号均可
<script>
let a = 'hello';
let b = "hello";
let c = hello; // error 这里出错
</script>
包含字符串的引号必须匹配,如果字符串前面使用的是双引号,那么在字符串前面使用的是双引号,那么在字符串后面也必须使用双引号,反之都使用单引号.
转义字符 | 描述 |
---|---|
\b | 退格 |
\n | 换行符 |
\t | 水平制表符,Tab空格 |
\f | 换页 |
’ | 单引号 |
" | 双引号 |
\v | 垂直字符表 |
\r | 回车符 |
\ | 反斜杠 |
使用String的length属性即可
<script>
let a = "hehe";
let b = "哈哈";
console.log(a.length);
console.log(b.length);
</script>
使用 +
进行字符串拼接
<script>
let a = "hehe";
console.log(a + "world");
console.log(a + 10);
</script>
<script>
console.log(1 == 1);
// 下面的写法不科学 不建议使用
console.log(true + 1);
console.log(false + 1);
</script>
<script>
let a;
console.log(a);
// undefined 和 字符相加
console.log("hello" + a);
// undefined 和 数字相加
console.log(1 + a);
</script>
<script>
let a = null;
console.log(a);
</script>
+
加 -
减 *
乘 /
除 %
求模
<script>
console.log(1+2);
console.log(3-2);
console.log(2*3);
console.log(4/4);
console.log(4%3);
</script>
=
+=
-=
*=
/=
%=
<script>
let a = 1;
console.log(a);
a+=1;
console.log(a);
a-=1;
console.log(a);
a*=2;
console.log(a);
a/=2;
console.log(a);
a%=2;
console.log(a);
</script>
++
: 自增1 --
: 自减1
<script>
let a = 1;
// 前置的时候 先加1 再使用
// 后置的时候 先使用 再加1
a++;
console.log(++a);
a--;
console.log(--a);
</script>
<
小于
>
大于
<=
小于等于
>=
大于等于
==
比较相等(会进行隐式类型转换)
!=
不等于
===
比较相等(不会进行隐式类型转换)
!==
(不会进行隐式类型转换)
<script>
console.log("5" == 5);
console.log("5" === 5);
</script>
&
按位与 同为1时为1,否则为0|
按位或 同为0时为1,否则为0;<script>
// 1 => 001
// 3 => 011
console.log( 1 & 3);
console.log( 1 | 3);
console.log( 1 ^ 3);
</script>
<<
左移>>
有符号右移(算术右移)>>>
无符号右移(逻辑右移) // 形式1
if (条件) {
语句
}
// 形式2
if (条件) {
语句1
} else {
语句2
}
// 形式3
if (条件1) {
语句1
} else if (条件2) {
语句2
} else if .... {
语句...
} else {
语句N
}
是 if else 的简化写法.
条件 ? 表达式1 : 表达式2
switch (表达式) {
case 值1:
语句1;
break;
case 值2:
语句2:
break;
default:
语句N;
}
while (条件) {
循环体;
}
continue
结束当前这次循环,继续其他循环
break
结束整个循环
for (表达式1; 表达式2; 表达式3) {
循环体
}
使用 new 关键字创建
// Array 的 A 要大写
let arr = new Array();
let arr = [];
let arr2 = [1, 2, 'haha', false]; // 数组中保存的内容称为 "元素"
<script>
let arr =[1,2,3];
console.log(arr[0]);
console.log(arr[-1]);
console.log(arr[3]);
</script>
<script>
let arr = [1,2,3];
arr.length = 6;
console.log(arr);
</script>
<script>
let arr = [1,2,3];
arr[5] = 6;
console.log(arr);
</script>
<script>
let arr = [1,2,3];
let newarr =[];
for(var i = 0; i < arr.length; i++){
newarr.push(arr[i]);
}
console.log(newarr);
</script>
<script>
let arr = [1,2,3];
arr.splice(0,1);
console.log(arr);
</script>
// 创建函数/函数声明/函数定义
function 函数名(形参列表) {
函数体
return 返回值;
}
// 函数调用
函数名(实参列表) // 不考虑返回值
返回值 = 函数名(实参列表) // 考虑返回值
代码示例:
<script>
function sayHello() {
console.log("hello");
}
sayHello();
</script>
实参和形参之间的个数可以不匹配. 但是实际开发一般要求形参和实参个数要匹配
代码示例:
<script>
function Add(a,b,c) {
a = a | 0;
b = b | 0;
c = c | 0;
return a + b + c;
}
console.log(Add(1,2,3));
console.log(Add(1,2));
</script>
另外一种函数的定义方式
<script>
let add = function(a,b) {
let sum = 0;
for (let i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum;
}
console.log(add(10,20));
console.log(add(1,2,3,4,5));
console.log(typeof add);
</script>
在 JS 中, 字符串, 数值, 数组, 函数都是对象.
创建对象 代码:
var student = {
name:'蔡徐坤',
heigth: 200,
weight: 300,
sayHello: function() {
console.log("hello");
}
}
使用对象的属性和方法 代码:
console.log(student.name);
console.log(student.heigth);
student.sayHello();
<script>
var student = new Object();
student.name = "蔡徐坤";
student.height = 200;
student.weight = 300;
student.sayHello = function() {
console.log("hello");
}
console.log(student.name);
console.log(student.weight);
student.sayHello();
</script>
function 构造函数名(形参) {
this.属性 = 值;
this.方法 = function...
}
var obj = new 构造函数名(实参);
<script>
function Student(name,id,say){
this.name = name;
this.id = id;
this.say = function() {
console.log(say);
}
}
let xiaoMing = new Student('小明',1,'hello');
let xiaoHong = new Student('小红',2,'嗨害嗨');
let xiaoQiang = new Student('小强',3,'你好!');
console.log(xiaoMing);
console.log(xiaoHong);
xiaoQiang.say();
</script>