文章目录
一、基本语法
1.1 创建变量
var
var 关键字告诉浏览器创建一个新的变量,如果重新声明 JavaScript 变量,该变量的值不会丢失,作用域为全局,如:
在以下两条语句执行后,变量 carname 的值依然是 “Volvo”:
var carname="Volvo";
var carname;
const和let
const定义不变量,let用来定义变量,let 局部变量,作用域有限基本类型如下
const str = 'hello';
const num = num;
const boo = flase;
//定义数组
const arr = [1,2,3];
JS的字符串可以使用单引号,也可以使用双引号
1.2 对象
JS定义对象如下所示
var person = {
firstName:"John",
lastName:"Doe",
age:50,
eyeColor:"blue"
};//在里面可以定义函数,称为对象的方法
person.lastName
和 person["lastName"]
都可以访问对象的属性,name = person.fullName()
访问对象的方法。
JS对象的键引用时只能是字符串,即使用
person["lastName"]
引用必须加引号
1.3 字符串
没啥好讲的,就一单引号双引号括着的东西。
1.4 基本符号
若有一条语句x=5
,运算如下
运算符 | 描述 | 比较 | 返回值 |
---|---|---|---|
== | 等于 | x == 8 | false |
x == “5” | true | ||
=== | 绝对等于(值和类型均相等) | x === 8 | false |
x === “5” | false | ||
!= | 不等于 | x!=8 | true |
!== | 不绝对等于(值和类型有一个不相等,或两个都不相等) | x!==“5” | true |
x!==5 | false |
1.5 条件判断
if……else与switch,与java等同
1.6 循环
-
for
for(let i = 0;i < 100;i++){ //执行代码 }
-
for…in
let a = [9,8,7,65]; let person={fname:"Bill",lname:"Gates",age:56}; for (x in person) // x 为属性名 { console.log(x); }
for…in中如上例的
x in person
中x代表的是索引,即fname,lname,age,若是对数组使用for…in,打印出的也是索引,即0,1,2,3。 -
while
同java
-
do…while
同java
1.7 typeof查看变量类型
typeof "John" // 返回 string
typeof 3.14 // 返回 number
typeof NaN // 返回 number
typeof false // 返回 boolean
typeof [1,2,3,4] // 返回 object
typeof {name:'John', age:34} // 返回 object
typeof new Date() // 返回 object
typeof function () {} // 返回 function
typeof myCar // 返回 undefined (如果 myCar 没有声明)
typeof null // 返回 object
1.8 类型转换
-
数字→字符串
String(100 + 23) // 将数字表达式转换为字符串并返回
-
字符串→数字
Number("3.14") // 返回 3.14 Number(" ") // 返回 0
二、this
2.1 对象方法中
var person = {
firstName: "John",
lastName : "Doe",
id : 5566,
fullName : function() {
return this.firstName + " " + this.lastName;
}
};
这里的this这的就是person
2.2 单独使用、函数中
函数中或单独使用 this,则它指向全局(Global)对象。在浏览器中,window 就是该全局对象为 [object Window]:
var x = this;
2.3 事件中的this
在 HTML 事件句柄中,this 指向了接收事件的 HTML 元素:
<button onclick="this.style.display='none'">
三、===与==
3.1 三等号===
- 如果两个值类型不相等,则他们不相等。
- 如果其中一个值是NaN,或者两个值都是NaN,则他们不相等。NaN和其他任何值都是不相等的,包括本身。通过NaN!==NaN来判断NaN,只有在x为NaN的时候,这个表达式的值才是true.
- 0 === -0 返回true
- 如果两个值为字符串,且所含的对应位上的16位(注1)完全相等,则他们相等。也可以通过String.localeCompare()来比较字符串
- 如果两个值指向同一个对象则他们是相等的。
3.2 双等号==
- 如果两个操作数类型相等,则和严格相等操作比较规则一样
- 如果一个是null,另一个是undefined则他们相等
- 如果一个值是数字,另一个是字符串,先将字符串转化为数字,然后使用转换后的值进行比较
- 如果其中一个是true,则将其转换为1再进行比较。如果其中一个是false,则将其转换为0再进行比较。
- 如果一个值是对象,另一个是数字或字符串,则先将对象转换为原始值,然后进行比较。