js是很难的语言,易学难精,只能多次学习。
简介:简介很重要,是只是的骨架。
JavaScript是一种可变类型语言,相比于java等语言,在类型转化上有优势,但是在编译和阅读上又会造成困难。
对于变量的使用,我总结了一下几种js的特性
- js有变量提升,所有声明会被提升到函数的最顶部。
重点是两个,声明而不是初始化。函数顶部而不是文档顶部。
对于初始化的不提升,结果,当然是显示unfinde啦
还有,严格模式不让变量提升。 - js之前有说过,是可变类型语言啦。
所以,简单的声明 var a,a的类型是任意。可以是数字,对象,数组,字符。
a=1;a=”1“ ;a=[1,1];都是可以的。
在使用后也可以根据需求转换成另一种变量。(也可以手动进行类型转换)
接下来介绍一个和变量息息相关的知识点:作用域
在此之前,大家牢记几个概念。一会对比着理解
- 变量是用于存储信息的"容器"。
- JavaScript 对象是拥有属性(值)和方法(函数)的数据。
- 函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
- 在 JavaScript 中, 对象和函数同样也是变量。
- 在 JavaScript 中, 作用域为可访问变量,对象,函数的集合。
因此,我们这么理解
函数是对象,对于全局函数,他是Window对象的方法(函数)
普通变量也是对象,或者对象的一部分属性
对于js来讲,一切都是对象。
那什么是作用域呢?
我的理解就是对象的{}包起来的部分,js文档的本质就是大小对象的嵌套,作用域是说,大括号的变量,函数,不能访问小括号里的,反过来则可以。
全局变量就是Window对象的属性和方法。
局部变量就是Window对象里的对象。
由此介绍三个关键字 var let const。PS:var和let定义的全局变量不同。let定义的不算document的属性。
上面的是基础,下面才是js重头戏。介绍js的几个主要功能。
ps:函数和方法的叫法不同,实质相同(Window的方法叫做函数)
js表单验证
据小道消息mjs被设计一开始就是为了做这个
x = document.forms[“表单名”][“input的名字”].value;
用的不多。但是有纪念意义
this 关键字
很难,很常用,不学不行。
this是对象的引用:差不多三(四)个代指
- 全局对象(就是Window啦):直接使用或者在函数里使用
- HTML元素:事件里使用(点击函数)
- 方法对象:在对象的方法里用
- 在严格模式下函数(Window方法)里用是违规的,结果是underfined
- 类似 call() 和 apply() 方法可以将 this 引用到任何对象。
问我也不会,还在学,下一个
JavaScript JSON
一个格式,和js对象差不多(没用方法的那种)
JSON.parse() 用于将一个 JSON 字符串转换为 JavaScript 对象。
JSON.stringify() 用于将 JavaScript 值转换为 JSON 字符串。
javascript:void(0)
就是一个没有返回值,没有操作的函数。
我没用到过
异步编程
这个重要,但是好理解。
先介绍下回调,就是创建子进程,然后主进程做别的事,告诉子进程,在什么条件下,你去做件事,我就不等你啦。
异步回调广泛用于计时器函数(其他的也有,但是忘了)
setTimeout(function () {
document.getElementById("demo1").innerHTML="RUNOOB-1!";
}, 3000);
另一个很重要的是Ajax。用来请求远程服务器上的xml和json
数据文件。
就像是监听器。
接下来是promise类,es6新增的
- Promise 构造函数只有一个参数,是一个函数,这个函数在构造之后会直接被异步运行,所以我们称之为起始函数。起始函数包含两个参数 resolve 和 reject。
- resolve 和 reject 都是函数,其中调用 resolve 代表一切正常,reject 是出现异常时所调用的
- Promise 类有 .then() .catch() 和 .finally() 三个方法,这三个方法的参数都是一个函数,.then() 可以将参数中的函数添加到当前 Promise 的正常执行序列,.catch() 则是设定 Promise 的异常处理序列,.finally() 是在 Promise 执行的最后一定会执行的序列。
记住就好,不用会用,因为难度不高,不如前两者常用
函数
js的函数与其他语言很不一样。,首先我接下来会用表格列出它的一写特点。
PS:函数是对象。
类型 | 函数表达式 | 函数声明 | Function函数 |
---|---|---|---|
有无等号 | 有 | 没有 | 有 |
函数提升 | 不可以 | 可以 | 不可以 |
箭头函数表达式 | 有 | 有* | 有 |
自调用函数 | 有 | 有 | 有 |