了解JavaScript
web三大标准
HTML(结构) + CSS(样式) +JavaScript(行为)
JavaScript
动态效果+数据交互
JavaScript作用
编程运行过程中,由js解析器(js引擎)逐行来进行解释并执行
现在也可以基于Node.js技术来进行服务器端编程
具体应用如:
- 表单动态校验
- 网页特效
- 服务端开发(node.js)
- 桌面程序
- APP
- 控制硬件
- 游戏开发
js由浏览器执行
浏览器分为 渲染引擎和js引擎
- 渲染引擎
用来解析HTML和CSS,俗称内核,比如谷歌浏览器 blink - js引擎
js解析器,用来读取网页中的javascript代码,对其处理后运行,比如谷歌的v8逐行执行每一句代码
js的组成
ECMAScript语法,BOM,DOM
js的三种引入方式
行内式
可以将单行或少量js代码写在HTML标签的事件属性中(以on开头的属性) 比如onclick
单双引号要错开使用,HTML中推荐使用双引号,js中使用单引号
可读性差,在html中编写大量js代码,不方便阅读,引号容易弄混
如:<input type="button" value="点我" onclick="alert('hello 17期学员 大家晚上好')">
内嵌式
可以将多行js代码写到script标签中
内嵌js是学习最常用的方式
如:
<script>
alert(123)
alert(9)
</script>
外部式
适合js代码量比较大的情况
利于HTML代码的结构化,把大段的js代码独立到HTML页面之外,方便复用
引用外部js文件的script标签中间不可以写代码
创建步骤:
1.新建一个js文件,xxx.js
2.html页面中通过script引入js文件
如<script src="./index.js"></script>
js注释
// 单行注释---------快捷键:ctrl+/
/* 多行注释 */----- 快捷键:alt +shift+a
js的输入输出语句
- alert();
浏览器弹出警示框 - console.log();
浏览器控制台输出信息 - prompt();
浏览器弹出输入框,用户可以输入,有确定和取消按钮
prompt获取过来的数据默认都是字符串类型 - document.write();
在浏览器屏幕上面打印
js对变量的使用
什么是变量
变量是程序在内存中申请存放数据的空间,通过变量名获取数据,数据可以更改
-
声明变量
var name;//声明了一个名称为name的变量
var是js的关键字,用来声明变量的,用该关键字声明的变量,计算机会自动为变量声明内存空间,不需要程序员管
name是程序员定义的变量名,我们要通过变量名来访问变量 -
变量赋值
name = "张三";//给name这个变量赋值为 "张三"
把等号右边的值赋值给左边的变量,变量值就是由程序员保存到变量空间里的值
-
变量初始化
var aa = 123;//声明变量并赋值---称为变量的初始化
-
变量重新赋值
var bb = 123; bb = 44;
一个变量被重新赋值,原来的值会被覆盖,变量值将以最后一次赋的值为准
-
同时声明多个变量
var age =23,n=34,sex="男";
同时声明多个变量,只需要写一个var ,多个变量名之间用逗号隔开
-
变量的特殊情况
var cc; console.log(cc);
只声明不赋值,默认值是undefined
console.log(dd);
不声明不赋值,直接使用,报错:dd is not defined
ee = 45; console.log(ee);
不声明只赋值,ee=45,但不属于变量
-
变量的命名规范
1.由字母,数字,下划线,$组成,如:num01,_age, $axios…
2.严格区分大小写,如:var a 和var A 是两个变量
3.不能以数字开头
4.不能是关键字,保留字,如:var for if else while do …
5.要有语义化
6.遵守驼峰命名法,首字母小写,后面单词的首字母要大写,如:myFirstName
数据类型
变量存储的数据可以是各种类型的数据
js是弱类型的语言,所以js变量的数据类型由值来决定
-
Number数值
var uAge =21; var isOk = isNaN(uAge) console.log(isOk)//false,是数字类型 console.log(isNaN("123"))//true
//isNaN 判断变量是否为非数字类型 返回true或者false
-
String字符串
字符串可以是引号中的任意文本,语法是双引号 " " 和 单引号 ’ ’
var str ="欢迎大家"; var str1 = '大家好'; var str3 = hello ; //报错 , //hello is not defined 没有使用引号,会被认为是js代码,但是js没有这个语法
注意单双引号要错开使用,不能用混了
var str3 = "我是'高富帅'"; var str4 = '我是"高富帅"';
-
字符串转义符
\ 斜杠
\n 换行符
’ 单引号
" 双引号
\t tab缩进
\b 空格 -
字符串拼接
只要由字符串和其他类型变量/值拼接,最终的结果是字符串console.log("中国"+"省份"); //"中国省份" console.log("我的序号"+13) ; //"我的序号13" console.log("我同意" + true); //"我同意true" console.log("12"+24); //"1224"
但是,字符串除了+数字以外,-、 * 、/ 都是可以直接与数值运算的
-
.length用于检测字符串的长度
var str5 = "my name is lucy"; console.log(str5.length);//15
-
-
Boolean布尔
布尔类型有两个值: true 和false
true表示真,false表示假
布尔型和数字型相加时,true为1 false为0var flag = true; var flag1=false; console.log(flag+1);// 2 console.log(flag1+1);//1
-
undefined和null
-
一个变量只声明不赋值,值为undefined,数据类型也是undefined
var str1 ; console.log(str1 + "hello");// "undefinedhello" console.log(str1 + 1);
//undefined和数字相加,最后的结果是NaN
-
一个声明的变量给null值,里面存的值为空
var space = null; console.log(space + "hello");//"nullhello" console.log(space + 1);//1
-
-
typeof获取变量的数据类型
var num=12; console.log(typeof num);//number console.log(typeof "xiaoxiao");//string var bol = true; console.log(typeof bol);//boolean var boll; console.log(typeof boll);//undefined var bol2 = null; console.log(typeof bol2);//object
null的数据类型是object
-
数据类型转换
比如:使用表单,prompt获取过来的数据默认都是字符串类型,不能进行简单的加法运算,需要进行数据类型转换-
parseInt()转换为数字型
console.log(parseInt(123)); //123 console.log(parseInt(123sss)); //123 console.log(parseInt(ss23)); //NaN,不是数字 console.log(parseInt(2w2)); //2 console.log(parseInt(12.4)); //12,取整数 console.log(parseInt(true)) //NaN
-
parseFloat() 转换为浮点型
console.log(parseFloat(123));//123 console.log(parseFloat(123sss));//123 console.log(parseFloat(ss23));//NaN console.log(parseFloat(2w2));//2 console.log(parseFloat(12.4));//12.4 console.log(parseFloat(true)) //NaN
-
Number强制转换
要求比转换数字高console.log(Number(123));//123 console.log(Number(123sss));//NaN console.log(Number(ss23));//NaN console.log(Number(2w));//NaN console.log(Number(12.4));//12.4
-
.toString()转换为字符串型
var num = 78; console.log(num.toString())//"78"
-
String() 强制转换
console.log(String(true))//"true" console.log(typeof String(90)) //string
-
Boolean()转换为布尔型
注意Boolean开头要大写console.log(Boolean(null))//false console.log(Boolean(undefined))//false console.log(Boolean("123"))//true console.log(Boolean(123))//true console.log(Boolean(""))//false console.log(Boolean(0))//false console.log(Boolean(1))//true
-
数据运算
-
== 只判断值
默认转换数据类型,把字符串型的数字转换为数字型 值相等就行
console.log(13=="13"); //true console.log(3==5);//false console.log("hello"=="liudh");//false
-
=== 值和数据类型都必须相等
console.log(13==="13");//false
-
表达式1 && 表达式2
第一个表达式值为真,返回第二个表达式
第一个表达式为假,返回第一个表达式console.log((3+4)&&9);//9 console.log(1&&0);//0 console.log(0&&1);//0
-
表达式1 || 表达式2
第一个表达式值为真,返回第1个表达式
第一个表达式为假,返回第2个表达式console.log((3+4)||9);//7 console.log(1||0);//1 console.log(0||1);//1
-
条件?‘表达式1’:“表达式2”
条件正确选第一个表达式,错误选第二个var num = 2; num>2?console.log(23):console.log(34)//34 var b = num>1?"hello":"word"; console.log(b)//hello
-
运算符优先级
优先级 运算符 1 小括号 2 ++、--、! 3 算数运算符(先 * / % 后 + -) 4 >、>=、<、<= 5 ==、!=、=== 6 先&& 后 || 7 =
流程控制语句
-
条件语句
-
if语句
if(条件){//js代码} if(条件){//js代码} else{//js代码} if(条件){//js代码} else if(条件){//js代码} else if(条件){//js代码} else{//js代码}
-
switch语句
switch(表达式){ case 值1: //js代码 break; case 值2: //js代码 break; default: //js代码 }
-
-
循环语句
重复执行相同的代码多少次-
while循环
初始化变量; while(条件表达式){ //循环体 //更新操作 }
-
do-while循环
初始化变量; do{ //循环体 //更新操作 }while(条件表达式)
-
for循环
for(初始化变量;条件表达式;更新操作){ //循环体 }
-
break和continue
break和continue只能应用在循环中,但是break还可以使用在switch结构中
break 终止循环 立即终止循环,并跳出循环,循环结束
continue 停止当前循环,继续执行下一次循环
-