刷完udacity的JavaScript,我想说……

前言

刷完了udacity上JS的入门课,纯粹为了学习开发小程序而补的前端知识。

一开始在SoloLearn上最先接触的JS,只用了三个小时不到就把证书刷下来了,这毕竟是我在SoloLearn的第一个证书,先炫一下哈!

刷完udacity的JavaScript,我想说……_第1张图片
SoloLearn证书

进入正题,JavaScript起初为了出名特地把名字取得和Java很像,因为Java一直都很火,Java web, 移动开发,服务器。当然如果学过java在去学JS得话,就会感觉者这门语言非常得友好,沿袭了Java的大部分风格,这里就说几点不同吧。

1. 数据类型

1.1自动判断类型。
刷完udacity的JavaScript,我想说……_第2张图片
JavaScript的数据类型

在传统的语言里,要定义变量,都要是使用int ,float , double ,boolean这些关键字,但是在JS里完全不用。直接使用var关键字,变量的数据类型完全由系统自动判断。

#java8,c,c++都要这么写

int age= 25;
float pi = 3.14;

#听说Java9也使用var 自动判断,不过,本人还是坚守Java8.

而在JS里就可以这么写:

var name = 'javascript';
var age = 25;
var pi = 3.14;
var message = ['hello', 'nihao'];

//注:JavaScript里single quote 和 double quote 没有区别,本人更加倾向single quote,JS好多地方和python很像。
1.2 字符串拼接

javaScript的字符串自动拼接,可以在这里把number直接转成字符串。


刷完udacity的JavaScript,我想说……_第3张图片
字符串自动拼接

注:console.log()是输出日志,相当于Java的System.out.print()。


1.3 绝对相等

javascript使用了自动判断类型,所以使用===表示数值和数据类型都相等,而==仅仅表示数值相等。


刷完udacity的JavaScript,我想说……_第4张图片
JavaScript绝对相等

刷完udacity的JavaScript,我想说……_第5张图片
实际测试
刷完udacity的JavaScript,我想说……_第6张图片
比较运算符

2.真假值

在JavaScript里,视为真值的有non-zero number, non-empty string, object, array, true。


刷完udacity的JavaScript,我想说……_第7张图片
Truthy Values

在JavaScript里,视为假值的有null, undefined, 0, empty string, NaN, fasle。


刷完udacity的JavaScript,我想说……_第8张图片
Fasly Values

三元运算符是从c语言一直沿袭下来的,Java也有。不过没怎么常用。

刷完udacity的JavaScript,我想说……_第9张图片
三元运算符

3.函数

JavaScript里函数使用function()关键字。


刷完udacity的JavaScript,我想说……_第10张图片
函数

3.1 返回与日志(输出与返回)

刷完udacity的JavaScript,我想说……_第11张图片
console.log()
刷完udacity的JavaScript,我想说……_第12张图片
undefined
刷完udacity的JavaScript,我想说……_第13张图片
输出与返回
刷完udacity的JavaScript,我想说……_第14张图片
输出与返回

3.2 作用域

刷完udacity的JavaScript,我想说……_第15张图片
引用传递
刷完udacity的JavaScript,我想说……_第16张图片
值传递

3.3 提升

1.JavaScript 会将函数声明和变量声明提升到当前作用域的顶部。

2.变量赋值不会提升。

3.在脚本的顶部声明函数和变量,这样语法和行为就会相互保持一致。


刷完udacity的JavaScript,我想说……_第17张图片
提升
刷完udacity的JavaScript,我想说……_第18张图片
提升导致的错误(1)
刷完udacity的JavaScript,我想说……_第19张图片
提升导致的错误(2)
3.4 函数表达式

匿名函数,有点类似lambda表达式。可以把函数储存在变量中。

刷完udacity的JavaScript,我想说……_第20张图片
函数表达式
刷完udacity的JavaScript,我想说……_第21张图片
匿名函数表达式

所有函数声明提升和加载后,脚本才会实际地运行。函数表达式不会提升,因为它们涉及变量赋值,只有变量声明会提升。在解析器在脚本中到达该表达式之前,函数表达式不会加载。

刷完udacity的JavaScript,我想说……_第22张图片
函数对比
3.4.1 回调
刷完udacity的JavaScript,我想说……_第23张图片
回调
3.4.2 有名称的函数表达式
刷完udacity的JavaScript,我想说……_第24张图片
有名称的函数表达式
刷完udacity的JavaScript,我想说……_第25张图片
命名函数表达式
3.4.3 内嵌函数表达式

这种内嵌函数表达式,在python中称之为把函数视为一等对象。


刷完udacity的JavaScript,我想说……_第26张图片
内嵌函数表达式

函数表达式,将函数内嵌传递给其他函数的语法在 JavaScript 中很常见

刷完udacity的JavaScript,我想说……_第27张图片
内嵌函数表达式

4.array

JavaScript的array感觉更像是python的list,用了这么久,感觉都是一样的。


刷完udacity的JavaScript,我想说……_第28张图片
array
刷完udacity的JavaScript,我想说……_第29张图片
array method
array loop

传统的遍历array。


刷完udacity的JavaScript,我想说……_第30张图片

forEach()更像是一种迭代。


刷完udacity的JavaScript,我想说……_第31张图片
forEach()
刷完udacity的JavaScript,我想说……_第32张图片
forEach()回调函数

map()返回一个新的array


刷完udacity的JavaScript,我想说……_第33张图片

5.对象

刷完udacity的JavaScript,我想说……_第34张图片
image.png
5.1 typeof

既然是自动判断类型的语言,就必然要有用来判断变量类型的函数。在python里是type(),在JavaScript里是typeof()。


刷完udacity的JavaScript,我想说……_第35张图片
typeof
5.2 创建对象

第一次看到这个时候感觉想c语言的结构体,但是后来想了想,感觉Javascript的对象更像散列函数。


刷完udacity的JavaScript,我想说……_第36张图片
创建对象
刷完udacity的JavaScript,我想说……_第37张图片
刷完udacity的JavaScript,我想说……_第38张图片
命名规则
刷完udacity的JavaScript,我想说……_第39张图片
创建 JavaScript 对象实例
刷完udacity的JavaScript,我想说……_第40张图片
把属性添加到 JavaScript 对象
刷完udacity的JavaScript,我想说……_第41张图片
把方法添加到 JavaScript 对象

结束

结束语

你可能感兴趣的:(刷完udacity的JavaScript,我想说……)