版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
语法基础目标掌握JavaScript的基础语法(复习)培养一定的编程思想为什么要有JavaScriptJavaScript最初的目的判断客户端的输入(以前的网速慢)后来被一度被用于小广告JavaScript现在的意义异步和服务器交互(ajax)页面特效(PC端的网页效果和游戏)移动端(移动web和app)服务端开发(nodejs)演示JavaScript的炫酷
浏览器是如何工作的(了解)JavaScript语言JavaScript是世界上用的最多的脚本语言互联网时代,浏览器可以做任何事情,而浏览器中运行的是JSJavaScript是一种客户端的脚本语言客户端:用户端(接受服务的一端),与服务端相对应JavaScript的历史1995年,Netscape的BrendanEich(伊利诺伊大学香槟分校),开始着手为NetscapeNavigator2.0开发一个称之为LiveScript的脚本语言,当时的目的是在浏览器中执行预检测程序。后来Netscape在与Sun合作之后将其改名为JavaScript。目的是为了利用当时火热的Java营销。最后Netscape的赌注最终得到回报,JavaScript从此变成了因特网的必备组件。但是Netscape却因经营不善,最终被AOL收购。JavaScript的历史三足鼎立Netscape的JavaScriptIE的JScriptCEnvi的ScriptEase与C和其他编程语言不同的是,JavaScript并没有一个标准来统一其语法或特性,而这3中不同的版本恰恰突出了这个问题。随着业界担心的增加,这个语言的标准化显然已经势在必行。JavaScript的组成(重点)ECMAScript语法规范DOM操作页面上的元素BOM操作浏览器的一些功能JavaScript、HTML、CSSJavaScript、HTML、CSS各自的作用HTML 提供网页上显示的内容(结构)CSS 美化网页(样式)JavaScript 控制网页行为(行为)规范:结构、样式、行为要分离输出语句console.log(“内容”)//在控制台打印输出内容alert(“内容”)//弹窗显示内容document.write(“内容”)//在页面书写内容代码注释单行注释
//单行注释多行注释
/*多行注释*/注释的应用注释一般用于解释某些复杂代码的逻辑,方便与后期的维护和开发注释一般用于对整个模块进行分割划分,方便于代码查找代码和维护注释一般用于:模块、函数、复杂逻辑注解、文件注解、维护记录等书写位置HTML页面书写JavaScript引入外部JavaScript文件注意:新建js的时候,记得修改编码Webstorm快捷键新建文件:alt+insertalt+fn+insert有些笔记本快速打开浏览器:alt+F2单行注释:alt+/再次取消多行注释:ctrl+shift+/再次取消快速到下一行的开头:shift+enter为什么要使用变量直接量(字面量)值是固定不变的,通过值就能看出来内容和类型111、“abc”、true变量(变化的量)比如年龄、金钱等可以把变量看成存储数据的容器。变量的声明赋值和使用变量是在计算机中存储数据的一个标识符。变量可以同时声明并赋值。varnum=11;变量可以先声明再赋值varnum;num=11;变量可以不声明直接赋值(不推荐)num=11;变量如果不声明也不赋值,直接使用(报错)。console.log(num);//报错在JS里,只要代码出错了,就不会往后继续执行了。可以在一行上定义多个变量(不推荐)
var
name,age,sex;变量的命名规则和规范规则(必须遵守)由字母、数字、下划线、$
组成且开头不能是数字不能是关键字和保留字区分大小写规范(建议遵守)变量的名称要有实际意义变量的命名遵守驼峰命名法,首字母小写,第二个单词的首字母大写例如:userName、studentName关键字和保留字练习先给同学们一些时间,写完我再讲交换两个变量的值不使用第三个变量交换两个数值类型变量的值内存显示弱类型
JavaScript是弱类型(松散类型)的语言下面这两行代码在JavaScript中是合法的,原因是JavaScript是弱类型的语言。但不推荐使用。varage=90;age=“马户”;目标掌握五种基本的数据类型numberstringbooleanundefined
//声明了变量但没有赋值null:空对象数据类型
计算机在声明数据的时候没有类型,但在计算和处理的时候是有类型的,JavaScript中的数据类型简单(基本、值)数据类型Number、String、BooleanUndefined、Null复杂(引用)数据类型(了解,后面详细讲)Object、Array、Date等查看当前变量的数据类型typeofnametypeof(name)Number类型使用字面量声明数值类型的变量var
age
=
18;
//数值字面量,18为字面值18,20,1000字面量固定的值,让你从“字面上”理解其含义。Number类型十进制var
num
=
9;进行算数计算时,八进制和十六进制表示的数值最终都将被转换成十进制数值。十六进制var
num
=
0xA;数字序列范围:0~9以及A~F八进制var
num1
=
07;
数字序列范围:0~7如果字面值中的数值超出了范围,那么前导零将被忽略,后面的数值将被当作十进制数值解析Number类型浮点数varn=5e+4;//xe+y表示x乘以10的y次方exponent浮点数值的最高精度是17位小数,但在进行算术计算时其精确度远远不如整数varresult=0.1+0.2;
//结果不是0.3,而是:0.30000000000000004console.log(0.07*100);永远不要测试某个特定的浮点数值(不要判断两个浮点数是否相等)数值范围由于内存的限制,ECMAScript并不能保存世界上所有的数值最小的数值:Number.MIN_VALUE,这个值为:5e-324最大的数值:Number.MAX_VALUE,这个值为:1.7976931348623157e+308正无穷:Infinity负无穷:-Infinity数值检测NaN非数值(NotaNumber)console.log(“abc”/18);
//结果是NaNNaN与任何值都不相等,包括NaN本身isNaN():任何不能被转换为数值的值都会导致这个函数返回trueisNaN(NaN);//trueisNaN(“blue”);//trueisNaN(123);//falseString类型字符串字面量varname="zhangsan";
//"zhangsan"字面量字符串要用引号引起,单引号和双引号的作用是等效的例如:var
name
=
"zhangsan";var
name
=
'zhangsan';var
name
=
'zhangsan";
//错误,单引号和双引号要成对出现字符串是由一个一个字符组成的,获取一个字符串中字符的个数可以使用length例如:var
name="zs";
alert(name.length);//2转义符字符串的不可变ECMAScript中的字符串是不可变的,也就是说,字符串一旦创建,它们的值就不能改变。要改变某个变量保存的字符串,首先要销毁变量与原字符串的关系,然后再用一个包含新值的字符串填充该变量例如:varstr=“123”;
str=str+“abc”;(内存图解)由于字符串的不可变性,大量拼接字符串非常消耗内存(将来可以用数组来解决)字符串拼接如果有两个字符串变量a,b,如何把这两个变量的值连接起来?例如:var
a
=
"hello";var
b
=
"
itcast";var
c
=
a
+
b;-思考:var
a
=
“100";var
b
=
100;var
c
=
a
+
b;
//结果是什么?+的功能两边只要有一个是字符串,那么+就是字符串拼接功能两边如果都是数字,那么就是算术功能。
Boolean类型Boolean类型有两个字面量:true和false,并且区分大小写!虽然Boolean类型的字面值只有两个,但ECMAScript中所有类型的值都有与这两个Boolean值等价的值例如:varresult=Boolean("a");console.log(result);//结果是truevarresult=Boolean(100);console.log(result);//结果是trueUndefined类型Undefined这是一种比较特殊的类型,表示变量未赋值,这种类型只有一种值就是undefined例如:varmessage;console.log(message);//结果是undefinedundefined是Undefined类型的字面量。例如:varmessage=undefined;console.log(message);typeof
message;获取到的是"undefined"目标掌握三种类型的转换转换成字符串类型转换成数值类型转换成布尔类型转换成字符串三种转换成字符的方法1、几乎每一个值都有toString()例如:varage=18;varageString=age.toString();console.log(ageString);
//结果"18"varresult=true;varresultString=result.toString();console.log(resultString);//结果"true"转换成字符串三种转换成字符的方法2、String()函数例如:varage=18;console.log(String(age));//结果"18"varresult=true;console.log(String(result));//结果"true"console.log(String(undefined));//结果"undefined"String()函数存在的意义:有些值没有toString(),这个时候可以使用String()。比如:undefined和null转换成字符串三种转换成字符的方法3、使用拼接字符串例如1:varage=18;varstr=age+"岁";console.log(str);例如2:var
str=""
+18;
//结果是"18"转换成数值类型Number()可以把任意值转换成数值,如果要转换的字符串中有一个不是数值的字符,返回NaNvarnum1=Number(true);//true返回1false返回0varnum2=Number(undefined);//返回NaNvarnum3=Number("hello");//返回NaNvarnum4=Number("");//如果是空字符串返回0varnum5=Number(123);//返回123,如果是数字,简单返回varnum6=Number("123abc");//NaNvarnum7=Number("abc123");//NaN缺点:在css中,经常碰到200px这类的值,使用Number无法转换到值,会返回NaN转换成数值类型parseInt()把字符串转换成整数varnum=parseInt(“200px”);//返回200,如果第一个字符是数字会解析知道遇到非数字结束varnum1=parseInt("12.3abc");//返回12,varnum2=parseInt("abc123");//返回NaN,如果第一个字符不是数字或者符号就返回NaN转换成数值类型parseFloat()把字符串转换成浮点数parseFloat()和parseInt非常相似,不同之处在与parseFloat会解析第一个.遇到第二个.或者非数字结束,如22.34.5//22.34parseFloat如果解析的内容里只有整数,解析成整数转换成数值类型使用运算符使用减乘除(加是拼接字符串)都可以varnum=“11”;num-0;num/1num*1+num转换成布尔类型转换布尔类型的方式Boolean()函数例如:varb=Boolean("123");
//返回yes流程控制语句会把后面的值隐式转换成布尔类型例如:var
message;if
(message)
{
//会自动把message转换成false
//todo...}转换为false的值:false、""、0和NaN、null、undefined思考下面代码输出的结果?varmessage;if(message){alert("有值");}else{alert("无值");}转换成布尔类型猜猜看,下面的语句的结果varb=!!"123";
第一个逻辑非操作会基于无论什么操作数返回一个布尔值第二个逻辑非操作则对该布尔值求反于是就得到了这个值真正对应的布尔值(结合性从右向左)目标算数运算符一元运算符逻辑运算符(&&||!)比较运算符赋值运算符运算符的优先级数学运算符数学运算符+加法运算符如果运算符,有一个操作数为字符串则将另一个操作数转换成字符串然后再将两个字符串拼接例如:var
str
=
"abc"
+
123;
//返回"abc123"-
减法运算符*乘法运算符/除法运算符%求模(取余)运算符/任何数除以0,返回Infinity%
任何数和0取余,返回NaN一元运算符++前置++var
age
=
18;console.log(++age);
//结果19(先计算,后返回)后置++var
age
=
18;console.log(age++);
//结果18(先返回,后计算)--和++相同一元运算符练习:vara=1;varb=++a+++a;console.log(b);
vara=1;varb=a+++++a;console.log(b);
vara=1;varb=a+++a++;console.log(b);
vara=1;varb=++a+a++;console.log(b);
练习:
逻辑运算符逻辑运算符&&与两个操作数都为true,结果为true
只要有一个操作数为false,结果为false|| 或只要有一个操作数为true,结果为true两个操作数都为false,结果为false! 非逻辑非操作符首先会将它的操作数转换为一个布尔值,然后再对其求反只有一个操作数短路操作在js中,有一点特别,&&和||不止能操作布尔类型的值,还能用来操作其他类型的值。判断的时候,会把值转换成布尔值,但是最终返回的结果还是原值&&和||都使用了短路操作短路操作,||运算碰到了true就会短路,&&运算碰到false就会短路,一旦短路,就直接返回第一个操作数的值,不再继续判断,如果不短路,就返回第二个操作数的值。(后面的兼容性判断会经常用到)逻辑运算符练习:非如果操作数是对象,返回false如果操作数是空字符串,返回true如果操作数是非空字符串,返回false如果操作数是0,返回true如果操作数是任意非0值,返回false如果操作数是null,undefined,NaN,返回true上面的规则可以简化成转换为false的值:false、""、0和NaN、null、undefined!!"abc"结果是什么比较运算符比较运算符<
<=
>=
>==
!=相等和不相等===
!==全等和不全等相等只比较值,全等比较的是值和类型例如:var
result
=
"55"
==
55;
//truevar
result
=
"55"
===
55;
//false值相等,类型不相等var
result
=
55
===
55;
//true赋值运算符=
+=
-=
*=
/=
%=例如:var
num
=
0;num
+=
5;//相当于num
=
num
+
5;num*=5;//相当于num=num*5;运算符的优先级优先级从高到底()优先级最高一元运算符++
--
!算数运算符先*/
%后+
-关系运算符>
>=
<
<=相等运算符==
!=
===
!==逻辑运算符先&&后||
表达式练习练习1((4>=6)||("人"
!=
"狗
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度环保技术改造项目合同3篇
- 2025版煤炭物流仓储一体化服务合同模板4篇
- 2024珠宝销售合同
- 2025年度高新技术企业研发费用加计扣除代理合同3篇
- 2025年度销售合同信息共享与部门协同办公2篇
- 2025年度XX农业废弃物资源化利用与污水处理合同3篇
- 2024水电站电力输出及销售合同协议
- 2025年度环保型厂房出租与能源管理一体化服务合同3篇
- 二零二五年龄上限劳动合同规范样本2篇
- 二零二五年度风景名胜区草坪修剪与修复合同3篇
- MT/T 199-1996煤矿用液压钻车通用技术条件
- GB/T 6144-1985合成切削液
- GB/T 10357.1-2013家具力学性能试验第1部分:桌类强度和耐久性
- 第三方在线纠纷解决机制(ODR)述评,国际商法论文
- 第5章-群体-团队沟通-管理沟通
- 肾脏病饮食依从行为量表(RABQ)附有答案
- 深基坑-安全教育课件
- 园林施工管理大型园林集团南部区域养护标准图例
- 排水许可申请表
- 低血糖的观察和护理课件
- 计量检定校准技术服务合同协议书
评论
0/150
提交评论