本文主要结构
任务
- JavaScript基础练习
- JavaScript集合练习
JavaScript基础练习学到的主要知识点
- JavaScript的主要环境
- (这是我在学习当中的一个难点)如何定义函数,如何调用函数:函数名、函数参数(感觉和C语言的函数有点像)
如:function arr(x){ ... }:
function指出这是一个函数定义
arr是函数名称
(x)括号内列出函数的参数,多个参数以,分隔
{ ... }之间的代码是函数体,可以包含若干语句,甚至可以没有任何语句- 函数调用,比如function arr(x){ ... }也可以写为
var abs = function (x){ ... };
在这种方式下,function (x) { ... }是一个匿名函数,它没有函数名。
但是,这个匿名函数赋值给了变量abs,所以,通过变量abs就可以调用该函数
注意这种方式结尾处不要少了逗号- 其次是变量的作用域:
1. 在函数内部定义变量时,严格遵守“在函数内部首先申明所有变量”这一规
则
2.局部作用域:由于js的变量作用域实际上是函数内部,在for循环等语句块中
是无法定义具有局部作用域的变量的,如该列代码是不可行的:
for (let i=0; i<100; i++)
所以为了解决块级作用域,用let替代var可以申明一个块级作用域的变量:
for (let i=0; i<100; i++)
- 声明常量:
var PI = 3.14;或者
const PI = 3.14;/const与let都具有块级作用域/- 方法(刚开始看着这个还在纳闷它要讲什么方法:学习方法?)
1.在一个对象中绑定函数,称为这个对象的方法。
绑定到对象上的函数称为方法(对象的定义和C语言中的结构体声明方法很相似
2.在一个方法内部,this是一个特殊变量,它始终指向当前对象。比如
该列代码:
var xiaoming = {
name: '小明',
birth: 1990,
age: function () {
var y = new Date().getFullYear();
return y - this.birth;
}
};
/其中this始终指向当前对象,也就是xiaoming这个变量/- 作用域的覆盖问题,当子作用域有变量与父作用域重名的时候,在子作用域里只能访问到子作用域的变量。称之为 覆盖
var x = 5;
function a(x){
console.log(x); //这时访问的x就不是父作用域的x了,而是参数 x
}
a(6); //打印的是6
console.log(x); //打印的是5- 常见错误:
1.for(var i = 0; i < 3; i++){
var result = [];
result.push(i);
}
/console.log(result); //有的初学者以为这里会打印 [0,1,2],实际上会
打印[2],因为result是在for里面被定义的, 每次循环都被重新初始化了。/
2.for(var i = 0; i < 3; i++){
let result = [];
result.push(i);
}
/*console.log(result); //Uncaught ReferenceError: x is not
defined,因为result是在for里面被定义的, 外面访问不到。
3.var result = [];
for(var i = 0; i < 3; i++){
result.push(i);
console.log(result); //有的初学者以为这里会在循环结束后打
印,实际上每一次循环console.log都会被执行
}
/**
* 上面这些代码执行的结果是:
* [0]
* [0,1]
* [0,1,2]
**/
我的Github地址
https://github.com/tengjiuying/Basic-JS
JavaScript的集合练习
- (这是practice的地址)
https://github.com/tengjiuying/JavaScript-Basic-practice/tree/master/pre-pos-master- basic-practice
主要是对JavaScript中数组、对象以及字符串的操作
个人总结:
- 首先还是对JavaScript的语法熟练程度不够,以及各个函数参数的调用,函数的处理,每个函数参数的作用域,能够作用的范围这些方面。每次写的时候总是会忘记一些东西,然后反复回去看
- 后期要通过不断的练习来提高对JS的语法、语句的掌握程度