一、计算机语言和JS介绍
1.计算机语言:机器语言和编程语言。机器语言就是计算机所执行的二进制数“0”和“1”;编程语言分为汇编语言和高级语言,其中汇编语言和机器语言是指相同,都是对硬件的操作,指令采用了标志符而容易识别和记忆,高级语言包括了很多种编程语言,如:C语言、C++、Java、C#、Python、PHP、JavaScript、Go语言、Objecttive-C、Swift等。
2.脚本语言:由JS引擎(解释器)逐行进行解释(转换为机器语言)并执行的语言,它由ECMAScript(JS语法)、DOM(页面文档对象模型)和BOM(浏览器对象模型)组成。行内式写法:在起始标签里添加onclick属性,如:οnclick="alert('秋香姐')";内嵌式写法:在head标签里添加<script></script>双标签,里面书写代码;外联式:引用外部JS文件,如:
<script src="my.js"></script>。
3.浏览器由渲染引擎和JS引擎构成,其中渲染引擎就是内核,用来解析HTML和CSS,如谷歌的webkit;而JS引擎用来读取JS代码并执行,如谷歌的V8。
4.JS的输入和输出语句:在浏览器页面弹出输入框使用prompt('提示信息');在控制台输出结果使用console.log('结果');在浏览器弹出警示框使用alert('输出信息')。
二、变量
1.本质就是在内存中用来存放临时数据的空间。
2.变量的使用:先声明(var age;)再赋值(age = 10;),最后使用和输出。只声明不赋值结果是undefined,不声明不赋值直接使用会报错(is not defined);不声明直接赋值使用(相当于全局变量)。
3.变量的命名规范:由字母、数字、下划线和美元符号($)组成,其中数字不能时开头,多单词时首字母大写,区分大小写,变量必须有语义(英文单词或者缩写),不能时关键字和保留字。
三、数据类型
1.简单数据类型:数字型(Number)、布尔型(Boolean)、字符串型(String)、未定义的没给值(Undefined)、给了空值null(Null)。
2.数字型:十进制(0-9),八进制(赋值前面加上0)、十六进制(赋值前面加上0x)。最大值(Number.MAX_VALUE),最小值(Number.MIN_VALUE),无穷大Infinity(Number.MAX_VALUE*2),无穷小-Infinity(Number.MIN_VALUE*2),非数字(NaN)。isNaN可以用来判断是否为数字,返回true或者fasle。
3.字符串型:引号中的任意内容,JS建议使用单引号。转义符:换行符(\n)、缩进(\t)、空格(\b)、斜杠(\\)、单引号(\')、双引号(\")。
4.字符串长度和拼接:(字符串.length)可以获取字符串的长度,字符串+任意类型=新的字符串。变量和字符串相连口诀:隐隐加加,'+变量+'。typeof可以检测数据的类型(typeof 数据的变量名)。
5.数据类型的转换:转换为字符串类型:①num.toString();②String(num);③加号拼接(num+'')。转换为数字型:①parselnt(string);②parseFloat(string);③Number(string);④减乘除隐式转换('12'-/*//12)。转换为布尔型:Boolean(),输出结果为true或者false。
四、JS操作符
1.算数运算符:加(+)减(-)乘(*)除(/)取余(%)。由数字、变量、运算符等组成的式子,式子的结果会有一个返回值(var num=1+1;),其中1+1为式子,结果为2,返回给num。
前置递增/减(++a):先自身加1再把值返回;后置递增/减(a++):先返回值再自身加1。
2.比较云算符:大于(>)小于(<)大于等于(>=)小于等于(<=)全等(===)判断号(==)不等号(!=),注意:其中判断号(==)和不等号(!=)会先转换数据类型再行比较。
3.逻辑运算符:逻辑与(&&)逻辑或(||)逻辑非(!),逻辑与中断:当有多个表达式或者值时,表达式1为真时返回表达式2,表达式1为假时返回表达式1;逻辑或中断:当有多个表达式或者值时,表达式1为真时返回表达式1,表达式1为假时返回表达式2。
4.赋值运算符:赋值(=)加减后再赋值(+=、-=)乘/除/取余后再赋值(*=、/=、%=)。
5.运算符优先级:小括号>一元运算符(++、--、!)>算数运算符(先*/%再+-)>关系运算符(> < >= <=)>相等运算符(== != === !==)>逻辑运算符(先&&后||)>赋值运算符(=)>逗号运算符(,)。
五、JS流程控制
1.if分支语句:if(条件表达式){执行语句;},条件成立则执行语句,否则什么也不做;
if(条件表达式){执行语句1;}else{执行语句2;},条件成立则执行执行语句1,否则执行语句2;
if(条件表达式1){执行语句1;}else if(条件表达式2){执行语句2;}else{执行语句3;},条件1成立则执行执行语句1,否则判断条件2,条件2成立则执行语句2,否则执行语句3。
2.switch分支语句:实现多选一的开关,
switch(表达式){
case value1:语句1;
break;
case value2:语句2;
break;
case value3:语句三;
break;
default:都不匹配时执行的语句;}
注意:switch语句会选中表达式与case后面的值相同时执行后面的语句并跳出循环;每个case后都有break,如果写break则不会跳出循环继续往下执行。if else if语句相较于switch语句,前者更灵活,用于范围判断,后者逻辑性简单,执行明确的条件语句,效率高。
3.三元表达式:条件表达式?表达式1:表达式2;,也可以这样写:条件表达式1?表达式2:条件表达式3?表达式4:条件表达式5?表达式6:表达式7;,在条件表达式1为假时,则会返回“条件表达式3?表达式4”,此时判断表达式3的真假,为真时返回表达式4,为假时返回“条件表达式5?表达式6”,再去判断表达式5的真假,为真时返回表达式6,为假时返回表达式7。
4.for循环语句:for(初始化变量;条件表达式;操作表达式){循环体;},执行思路:初始化变量执行一次,再判断变量是否满足条件表达式,如果满足条件就执行循环体,再去执行操作表达式,然后再判断是否安祖条件表达式,如果不满足则退出循环体。for循环嵌套if语句可以输出不同的结果,此时的循环体就是if语句。求和公式(sum=sum+i;)。双重for循环的空值:外层for空值行,内层for空值每行的次数(三角形星星排列,九九乘法表)。
5.while循环:while(条件表达式){循环体;},执行思路:条件表达式为真则执行循环体,否则就退出循环。
<script> <script>
var num = 1; while(1){
while(num<=100){ console.log('你好');
console.log('你好'); }
} </script>
</script>
这两个都是死循环,会无限次执行“你好”。所以while循环也应该再循环体里加上一个操作表达式“num++”,或者添加break跳出循环。
6.do while循环:do{循环体;}while(条件表达式),执行思路:先执行一次循环体,再判断表达式是否为真,如果为真则继续执行循环体,为假则退出循环。同样再循环体里要添加操作表达式,否则会卡死。
7.continue与break:continue只是退出当前次的循环,继续执行剩余的循环;break则是直接跳出循环体,剩余的也不执行了。如:左边执行4次“你好”,右边则只执行2次“你好”。
<script> <script>
for(var i = 1;i<=5;i++){ for(var i = 1;i<=5;i++){
if(i==3){ if(i==3){
continue; break;
} }
console.log('你好'); console.log('你好');
} }
</script> </script>