(1)了解JavaScript的基本语法;
(2)能读懂JavaScript代码。
;
结束。\
进行换行。行注释
// 我是单独一行注释
alert('Hello World'); // 我是句尾的行注释
块注释
/* 我要开始注释啦
我要结束注释啦*/
var hello; // 声明一个名为hello的变量,此时该变量的值为undefined,表示未定义
hello='我是个字符串'; //此时变量的值为“我是个字符串”
var name = "法外狂徒-张三";
console.log(temp);// 返回undefined
var temp = '你好';
var temp = 'Hello!';
for (var i = 0; i < temp.length; i++) {
console.log(temp[i]);
}
console.log(i); // 返回数字6,泄露为全局变量了。
var temp = 'Hello!';
for (let i = 0; i < temp.length; i++) {
console.log(temp[i]);
}
console.log(i); // 报错未定义,没有泄露
ES5中只有全局作用域(顶层作用域)和函数作用域。
var temp = '你好!';//全局作用域
function testScope() {
var temp = '早上好!'; //函数作用域
console.log(temp);
}
testScope(); //返回函数作用域中的“早上好”!
console.log(temp); //返回全局变量的“你好”!
ES6引入块级作用域,使用let关键字声明的变量只能在当前块级作用域中使用。
function testBlockScope() {
let name = '小明';
if (true) {
let name = '小红';
console.log(name); // 返回“小红”
}
console.log(name); // 返回“小明”
}
ES6引入const关键字声明只读的常量。
const PI = 3.14159;
console.log(PI); // 输出: 3.14159
PI = 3.14; // 报错: TypeError: Assignment to constant variable.
需要注意的是,const关键字确实可以用于声明只读的常量,但对于对象来说,const并不表示对象本身是不可变的,而是表示对象的引用是不可变的。
当使用const声明一个对象时,你不能再将该常量指向其他对象,但你仍然可以修改对象本身的属性值。
const person = {
name: "John",
age: 30
};
person.age = 31; // 可以修改对象的属性值
console.log(person); // 输出: { name: "John", age: 31 }
person = {}; // 报错: TypeError: Assignment to constant variable.
数值(Number)、字符串(String)、布尔值(Boolean)、null和undefined、数组(Array)、对象(Object)、符号(Symbol)、映射(Map)、集合(Set)
var msg = `服务器侦听监听地址和端口:${srvip}:${port},请注意!`;
===
而不要使用 ==
。var myObj = {
isobj: true,
num: [1,2,3],
desp: '对象好像可以无所不包'
};
.
属性(键)名”的方式。let numproperty = 'num';
var myObj = {
[numproperty]: [1,2,3],
['des'+'cription']: '我是个对象'
};
let welcome = Symbol();//自动产生一个值
// 第1种表示方法
let myObj = {};
myObj[welcome] = '欢迎光临';
// 第2种表示方法
let myObj = { [welcome]: '欢迎光临' };
// 第3种表示方法
let myObj = {};
Object.defineProperty(myObj, welcome, { value: '欢迎光临' });
const myMap = new Map();
const myObj = {welcome: '欢迎光临'};
myMap.set(myObj,'我是一个对象');
myMap.get(myObj); //结果为'我是一个对象
const mySet = new Set();
const mySet = new Set([1, 2, 3, 4, 4]);//会自动过滤掉其中一个数字4
遍历数组可以采用下标循环,而遍历映射和集合就无法使用下标。为了统一集合类型,ES6引入了新的Iterable类型,数组、映射和集合都属于Iterable类型。这种类型的集合可以通过新的for … of循环来遍历。更好的遍历方式是使用Iterable类型内置的forEach方法。
switch(变量)
{
case 值1:
代码1;
break;
case 值2:
代码2;
break;
default:
如果以上条件都不满足,则执行该代码;
}
for (var key in obj) {
console.log(key);
}
循环结构中的条件需使用括号括起。
function sumAge(x,y) {
return x + y;
}
sumAge(x=19,y=20)
function sumAge (x,y) {
x = arguments[0]===undefined ? 21 : arguments[0]; //设置参数x的默认值为21
y = arguments[1]===undefined ? 20 : arguments[1]; //设置参数y的默认值为20
return x + y;
}
sumAge(22,20);//两人加起来42岁
function sumAge (){
var sum = 0;
var numcount= arguments.length
for (var i=0;i<numcount;i++){
sum += arguments[i];
}
return sum;
}
function sumAge(...values){
var sum = 0;
for (var val of values){
sum += val;
}
return sum;
}
声明函数时省略函数名。
var sumAge = function (x,y) {
return x + y;
};
使用箭头符号(=>
)定义函数。
示例 | 箭头函数 | 普通函数 |
---|---|---|
一个参数 | var f = x => x; |
var f = function (x) { return x; }; |
多个参数 | var sumAge = (x, y) => x + y; |
var sumAge = function (x, y) { return x + y; }; |
无参数 | var f = () => 20; |
var f = function () { return 20; }; |
代码块包含多条语句 | var diffAge = (x, y) => { var diff = x - y; return Math.abs(diff); } |
var diffAge = function (x, y) { var diff = x - y; return Math.abs(diff); }; |
以上是箭头函数和普通函数在不同情况下的对比示例。箭头函数是ES6中引入的一种更简洁的函数语法,可以更方便地定义函数。与普通函数相比,箭头函数具有更短的语法和更简洁的写法。
以一个或多个函数作为参数的函数。
function diffAge(m, n, abs) {
return abs(m-n);
}
diffAge(19, 22, Math.abs);
var basePrice = 10.00;//起步价
var baseMiles = 3.00; //起步里程
function taxiPrice(unitPrice, Mileage) {
function totalPrice() { //计算总费用 ;这是定义在一个函数内部的函数
if ( Mileage > baseMiles) { //超过起步里程
return unitPrice*Mileage; //单价与里程相乘
}
else{ //在起步里程内
return basePrice;
}
}
return totalPrice ();
}
taxiPrice(2.00,6.00);//打车费用12.00
function Visitor(name, sex) { //来宾信息
this.name = name;
this.sex = sex;
}
VisitorPoint.prototype.getInfo = function () {
return this.name + ', ' + this.sex;
};
var visitor = new Visitor('张勇', '先生');
class Visitor{
constructor(name, sex) {
this.name = name;
this.sex = sex;
}
getInfo() {
return this.name + ', ' + this.sex;
}
}
var visitor = new Visitor('张勇', '先生');