理解面向(oriented):以……为导向为核心。此处类似于教育要面向未来,要面向现代化……
理解过程(procedure):一步一步的实现,实现某个功能的过程。
具体来说,这一步一步的过程,可以被大致分为:变量赋值、运算、分支循环、函数封装,四大部分。
C语言是偏底层偏硬件的,基本上不会用于普通的应用开发,更不会用于Web开发。为什么热度第一,飞哥估计是因为教学……
实事求是的说,作为语言,JavaScript有很多很多的问题。但它有一点好:方便!直接使用浏览器就可以运行……
所以综合考虑,现阶段我们先使用JavaScript语言进行简单演示
PS:前后端的同学都请放心,所有这些知识,都是基础的、通用的
JavaScript是一种解释型语言,所谓解释(interpret),就是没有编译这一过程,或者没有编译生成的文件。
#常见面试题:编译和解释的区别#
解释器(对于JavaScript而言就是浏览器)可以直接执行源代码。
PS:
计算机的概念是进步的,大家不要过于纠结。包括编译,以前我们是编译是将源代码编译成二进制机器码,但Java和C#都是将其编译成一种“中间语言”
另外,大家要区分:
所以,这种说法:Java都是C写的……本义应该是Java的编译器是C写的。
演示:在主流浏览器上按F12,就可以出现控制台(console),在里面输入代码回车就可以执行:
alert('源栈欢迎你')
代码的最小执行单元是行(line)。
用分号(;)来表示一行的结束。
一行代码中通常会出现空格(space),用空格来分隔关键句/变量名……演示:
let age = 18; letage=18; al ert('源栈欢迎你')但是多个空格会被视为一个,演示:
alert ('源栈欢迎你')
我们要学习的这几种语言中:
另外,代码中还会出现注释(comment)。通常用于向其他开发人员解释说明代码,包括:
//NOTE:该对象必须先保存,再使用
/*大家明明可以靠颜值, …… 为什么要拼才华?*/
注释内容不影响代码的运行(编译/解释时会被忽略),演示:
//alert('源栈欢迎你')
同学们要善于利用换行、空格(缩进)和注释提高代码的可读性。
注意:代码的可读性,非常重要!非常重要!!非常重要!!!会贯穿我们全部的教学过程!
#常见面试题(争论):代码里面有没有必要写注释?
好玩:你见过哪些有趣的注释?
就像代数运算中我们经常需要用一个符号表示一个可变的可替换的数值一样:
y=2x+1
y和x都是变量。x可以是1,也可以是2、3、4……;当x发生变化,y也会相应的变化。
计算机的“计算”,也离不开变量:输入/中间运算/输出……(复习:图灵机,计算机的计算,本质上和人的计算没有区别)
程序语言中的变量(variable),也是这样一个概念,可以理解为存放数据的盒子。
比如我们要用一个变量表示源栈的学费,就可以:
let fee = 986; //让fee代表986
fee就是一个变量,或者说,fee就是变量名。
let fee=986; 这么一条语句,实际上包含了两个部分:
变量可以在声明的时候马上赋值(如前所述);也可以先声明,以后再赋值:
let fee; fee = 986; //注意这里的fee前面没有let
但无论如何,变量都应该:先声明,再赋值;先赋值,再使用。
还可以在一条语句中赋值同类型的多个变量:
let fee = 986, weeks = 4;注意:
为了强调,我专门用一节课来讲!
变量名首先有一些强制规定:
注意:作为一个专业的程序员,变量名一定要:清晰直观有意义。
变量名:
如果用英语(99%的场景),多个单词之间,用首字母大写的方式隔断,比如:isFemale,这被称之为:驼峰命名法——这是目前最主流的命名法。
上述语句运行之后,fee这个变量,里面装着的就是986。
以后我们对fee进行操作,实际上就是对986进行操作;或者说,我们使用变量,就是使用变量这个盒子中存放的数据。比如:
fee + 1;
运行时就是986+1,结果为987。
注意:使用已有变量的时候,不能再添加关键字let
@试一试@:加了let又会怎么样?
变量,按字面理解就是一个可以改变的量。所以我们还可以给他重新赋值,改变它的值:
fee = 888; //同样注意fee前面没有let,因为第二次赋值,你是在“使用”它了
注意:给变量再次赋值,等同于使用变量,不要在前面加let。
这时候,fee里面装的就是888了。
一个盒子一次只能存放一条数据。
所以第二次赋值,就将fee中存放的数据“变”成了888——这就是变量名称的由来。
@想一想@:以前存放的数据呢?放哪去了和变量相对应的就是不能变化的常量(还记得么?圆周率是一个常量,地心引力也是一个常量):
const pai = 3.14
注意:常量仍然可以参与预算,只是不能被改变
20*pai; //OK的 pai = 3.1415 //报错
首先澄清一个概念,无论强类型,还是弱类型,数据本身都是有类型的。比如:
这是不一样的:
3+2; //3和2都是整数,所以结果是5 "3"+"2" //"3"和"2"都是字符串,所以+代表拼接,结果是32
#体会:为什么需要数据类型?#
强/弱类型针对的是变量,不是数据。
通常,强类型语言(Java和C#)的变量声明,要在前面标记类型,比如:
int fee = 18; //fee是int(整数integer)类型 String slagon = "源栈欢迎你"; //slagon是string(字符串)类型 fee = "成年"; //会报(编译时)错
如果在一条语句中赋值给多个变量赋值,变量必须是同类型的:
int a = 3, b = 2;
弱类型(JavaScript)要么不用标记(如前所示),要么统一用let等标识
let fee = 18; fee = "源栈欢迎你"; //OK的,不会报错
PS:强类型又被称之为静态(static)类型,弱类型又被称之为动态(dynamic)类型。
弱类型语言唯一的优势就是灵活/自由,而由此而带来的问题……一言难尽啊,一句话:
开发一时爽,维护火葬场
PS:因为TypeScript的逐渐流行(vue3.x都使用TypeScript编写),所以即使是前端开发人员,飞哥也强烈推荐了解一些强类型知识,包括后续的面向对象等。
let age = 28; //age = 30; age + 10; alert(age); /*这时候age的值是多少?*/ age = age + 10; alert(age); /*这时候的age的值又是多少?*/
多快好省!前端后端,线上线下,名师精讲
更多了解 加: