本文共 5416 字,大约阅读时间需要 18 分钟。
一、什么是JavaScript
JS是运行在客户端的一种解释型编程语言,它是一种弱类型的语言。作用是用来完成前后端交互、增加用户体验的一些逻辑实现。 一个网页是三部分组成:结构(HTML/HTML5)、表现(CSS/CSS3)和形为(JavaScript),而前端开发的核心是:JavaScript。二、JavaScript的组成
(1)ECMAScript(标准:ECMA-262):基础语言部分(基础、面向对象等) (2)DOM(标准:W3C):节点操作 (3)BOM(无标准):浏览器操作三、JS的特点
(1)松散性:JS的中变量没有一个明确的类型,也叫弱类型的语言(允许将一块内存看作多种类型) (2)对象属性:对象的属性也可以映射为任意的数据。 (3)继承机制:JS是基于原型继承的。四、使用Javascript
(1)使用script标签(只能被当前HTML文件使用)注意:
a.script标签可以写在网页代码中的任意的地方,因为JS是同步执行的,但为了避免JS阻塞和影响操作DOM,最好写在body后。 b.如果要输出script结束标签时,必须拆开写:alert(’</sc’+‘ript>’);除此之外,标签内部还有些其余的属性
1.type:必需。表示代码使用的脚本语言的内容类型。例如:type=“text/javascript”。 2.charset:可选。表示通过src属性指定的字符集。 3.defer:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。 4.src:可选。表示包含要执行代码的外部文件。 5.async:可选。规定异步执行脚本(仅适用于外部脚本)。(2)在a标签的href中写JS代码(实际开发中不建议这种使用,因为会影响到性能)
大家好
(3)用script标签引入外部JS文件(可以被多个HTML文件使用)
说明:
src:引入的外部JS文件的路径和文件名(只能用于引入JS文件) async:异步加载JS代码(在加载DOM元素的同时可以运行JS代码)以上三种实现出来的效果都是大同小异,这里只展示第一种情况下的结果
五、标识符
从这里开始,以下的大部分内容只要接触过计算机专业的都应该很清楚,都是一些很基本的东西。所谓标识符,就是指变量、函数、属性的名字,或者函数的参数。
标识符定义规则: (1)第一字符必须是一个字母、下划线(_)或一个美元符号($)。 (2)其他字符可以是字母、下划线、美元符号或数字。 (3)不能把关键字、保留字、true、false和null作为标识符。关键字:break、else、new、var、case、finally 、return 、void、catch、for、switch、while、continue、function、this、with、default、if、throw、delete、in、try、do、instanceof、typeof等
保留字:abstract、enum、int、short、boolean、export、interface、static、byte、extends、long、super、char、final、native、synchronized、class、float、package、throws、const、goto、private、transient、debugger、implements、protected、volatile、double、import、public等注意:在JS中任意地方是严格区别字母大小写的!
六、注释
(1)单行注释 // 注释内容 一般用于对当前行的代码时进行说明(一般写在代码后面) (快捷键是Ctrl+/) (2)多行注释 (快捷键是Ctrl+Shift+/) /* 注释内容 注释内容 …… */ 也叫作块注释。一般对下面的代码进行整体说明,且说明内容可能较多。说明:
1)注释语句在浏览器中不会被解析执行,仅起说明作用; 2)在项目中,要习惯去写注释,主要便于后期的项目维护。七、常量
常量也叫直接量或字面量,在程序中直接给出具体的数据。常量是不可以改变的。如:100,true,‘abc’,null,undefined等八、变量
变量就是在内存中开辟一段空间用于存放某个数据。 变量必须要有变量名,变量名必须遵循标识符的命名规范。定义:
(1)只定义变量 var x; var a, b, c; (2)定义变量且赋值 var x1 = true; var y1 = 100, y2 = null;说明:
(1)定义变量时不需要给出数据的类型(松散式语言特点)。 (2)变量可以重复定义,后面会覆盖前面变量。 (3)不用var定义变量也可以,默认是为window对象添加了属性。 name = ‘张三’; // 相当于 window.name = ‘张三’; (4)定义的变量如果没有赋值,系统将自动赋默认值为’undefined’。 (5)一条语句可以以分号结束,也可以不加分号;如果是多条语句写在同一行上,必须用分号隔开。 (6)在书写代码时,除了字符串中可以使用中文标点之外,其它任何地方只能用英文标点符号九、数据类型
数据类型指的是在内存存储的方式。分为: (1)基本数据类型 number:数值型,用来表示一个数字,通常可用作进行加减乘除等运算。 在分为整型和浮点型(小数位可以浮动)。isNaN():用来判断是不是不是一个数。
string:字符型,用引号(单双引号都可以,它们没区别)引起来的一串字符(可以是数字、字母、标点符号、汉字等),通常用作描述。
boolean:布尔(逻辑)型,表示真(true)或假(false)。
null:空,表示一个空对象的地址指定指向的为空。
undefined:未定义,表示定义了一个变量,但如果没有给这个变量赋值,系统将自动赋值为undefined。
(2)引用数据类型
object:对象型,用来申明或存储一个对象(对象,函数、正则、字符、数值等) var a = new Number(10); var obj = { sno: ‘007’, sname: ‘张三’ }十、运算符
(1)算术运算符 + - * / %(求余/模) ++(自增) --(自减)(2)字符串运算符
+:用于实现字符串连接。(3)关系运算符
> < >= <= == === != !== 返回的结果只能是true或false。 比较方法: a.数值比较,是比较其大小; b.字符比较,是比较ASCII码值的大小; 0->48,A->65,a->97,回车->13,ESC->27 c.汉字比较,是比较其Unicode编码值的大小 可以通过charCodeAt()获取编码值。 d.==和!=只比较值,不比较类型;===和!==既比较值又比较类型比较:部分符号<数字<大写字母<小写字母<汉字
十一:逻辑运算符
逻辑运算符有:!、&&和||三种。返回的值一般是逻辑值true或false,也可能返回其它值。(1)!:逻辑非(取反)(单目/一元运算)、!true -> false !false -> true
(2)&&:逻辑与(双目/二元运算)只要有一个操作数为false,结果为false。
注意:如果两个中任意一个操作数非逻辑值,第一个操作数的结果为true时,返回第二个操作数的值;第一个操作数的结果为false时,返回第一个操作数的值。(3)||:逻辑或(双目/二元运算)、只要有一个操作数为true,结果为true。
注意:如果两个中任意一个操作数非逻辑值,第一个操作数的结果为true时,返回第一个操作数的值;第一个操作数的结果为false时,返回第二个操作数的值。短路运算:
a.&&运算时,如果第一个操作数为false,不需要计算第二个操作数,结果返回false。 b.||运算时,如果第一个操作数为true,不需要计算第二个操作数,结果返回true。十二、三目运算符(条件运算符)
语法:表达式1 ? 表达式2 :表达式3 如果表达式1成立,返回表达式2的结果;如果不成立,返回表达式3的结果。 比如:2>3?2:3,2>3不成立,结果返回3Tips:
三目运算相当于if语句中的双分支结构。 如果表达式2或表达式3较为复杂,建议用if语句或switch语句实现。十三、流程控制
JS是一门既面向过程,也是面向对象的解释型语言。 面向过程:按照代码书写的顺序依次执行(OOP)。 JS也是一门结构性语言。JS的结构分为顺序结构、分支(条件/选择)结构和循环结构三种。 (1)顺序结构:按照代码的书写顺序依次执行,一般包含初始化、赋值、输入/输出等语句。 (2)条件结构:用if或switch语句实现,其中的代码是有条件选择执行的。 (3)循环结构:某部分代码在指定的条件范围内反复执行,用for/for…in/forEach/while/do…while语句实现。条件结构
a.单分支 语法: if(条件)语句; 或: f(条件){ 语句组; } 如果条件成立,将执行语句或语句组;条件不成立,执行if的下一条语句。b.双分支
语法: if(条件)语句1;else 语句2; 或: if(条件){ 语句组1; }else{ 语句组2; } 如果条件成立,将执行语句1或语句组1;条件不成立,将执行语句2或语句组2。注意:else表示“否则”的意思,其后不能写条件。
c.多分支(三分支及以上的)多分支实际上是单分支和双分支的嵌套。
语法: if(条件1){ if(条件2){ if(条件3){ 语句或语句组; } } }或:
if(条件1){ 语句1或语句组1; }else{ if(条件2){ 语句2或语句组2; }else{ 语句3或语句组3; } }或:
if(条件1){
if(条件2){ 语句1或语句组1; } }else{ if(条件3){ 语句1或语句组2; }else{ 语句1或语句组3; } }或(简洁写法,推荐):
if(条件1){
语句1或语句组1; }else if(条件2){ 语句2或语句组2; }else if(条件3){ 语句3或语句组3; }else{ } 如果条件1成立,将执行语句1或语句组1,后面的代码将不会被执行; 如果条件1不成立,将判断条件2,条件2成立,执行语句2或语句组2…… 如果前面的条件都不满足时,将执行else后面的代码。d.情况语句switch
语法: switch(表达式){ case 表达式1: 语句1或语句组1;[break;] case 表达式2: 语句2或语句组2;[break;] case 表达式3: 语句3或语句组3;[break;] … case 表达式n: 语句n或语句组n;[break;] default:语句n+1或语句组n+1; }说明:执行表达式,如果表达式的结果为case后面的某个对应的值,将执行后面所对应的语句或语句组,如果语句后有break,将终止该情况语句,
如果没有break,将不再判断条件,继续执行后面的语句,直到遇到break为止;如果条件都不满足,将自动执行default后的语句。switch与if的区别:
switch一般用于能获取结果的简单条件的判断,而if一般用于较为复杂的条件判断; if能实现的条件判断,switch不一定能实现,switch能实现的条件判断,if也一定能; 如果switch和if都能用的情况下,switch一般较简洁些。2)循环结构
I)循环 a.计数循环(for) 语法: for([变量初始值];[条件];[步长]){ [循环体;] [continue;] [break;] }说明:先执行变量初始值,再判断条件,如果条件成立,再循环体,再计算步长,最后再判断条件,条件成立,继续执行循环体……,直到条件不成立,跳出循环为止。
该循环的次数是可以计算出来:循环次数=[(终值 - 初值) / 步长] + 1
b.当型循环(while)
语法: while(条件){ [循环体;] [continue;] [break;] } 说明:当条件成立时,执行循环体,反之则跳出循环。c.直到型循环(do…while)
语法: do{ [循环体;] [continue;] [break;] } while(条件) 说明:先执行循环体,再判断条件,如果条件成立,继续循环,反之则跳出循环。直到型循环与当型循环的区别:
当条件1次都不成立时,直到型循环至少会执行一次循环,而当型循环一次也不执行。十四、break、continue
break语句可以用在switch语句和循环语句中(forEach循环除外),表示跳出(结束)情况语句或循环。 continue语句只能用在循环语句(forEach循环除外)中,表示结束本次,继续下一次循环。注意:
1、break和continue语句必须单独存在,后面不能添加其它代码。 2、break和continue语句一般放在if语句中。转载地址:http://ufvrn.baihongyu.com/