基本概念
Javascript是一种解释性语言,浏览器充当解释器。Js执行引擎不是逐行执行,而是逐段分析执行。延迟脚本
延迟属性是在HTML4.0.1中定义的,其目的是表明脚本在执行时不会影响页面结构。也就是说,脚本被延迟,直到整个页面被解析。因此,在script元素中设置delay属性相当于告诉浏览器立即下载但延迟执行。在一个XHTML文档中,将defer属性设置为defer=“defer”
异步脚本
Html5为脚本定义异步属性。整个属性类似于defer属性,用于更改处理脚本的行为。类似地,像defer一样,async只适用于外部脚本文件,并告诉浏览器立即下载文件。但是,与延期不同,标记为异步的脚本不能保证按照指定的顺序执行。指定async的目的是防止页面等待脚本文件被下载和执行,从而异步加载页面的其他内容。因此,建议异步脚本在操作过程中不要加载DOM
区分大小写
ECMASCript中的所有内容(包括变量、函数名和运算符)都区分大小写。
1.JScript变量
变量第一次使用时在内存中设置,方便以后在脚本中引用。使用变量之前先声明变量。您可以使用var关键字来声明变量。
var计数、金额、级别;//用单个var关键字声明的多个声明。
变量命名
变量名包括全局变量、局部变量、类变量、函数参数等。他们都属于这一类。
变量命名由带有有意义的类型前缀的单词组成,驼峰命名用于增加变量和函数的可读性。示例:sUserName,nCount。
前缀规范:每个局部变量需要有一个类型前缀,可以分为:
s:表示字符串。例如:sName、sHtml;n:数字。例如:nPage、nTotal;b:表示逻辑。例:bChecked,bHasLogin;a:代表数组。例如:ArtI,一个组;r:代表正则表达式。例如:rDomain、rEmail;代表功能。例如:fGetHtml,fInit;o:表示上面没有提到的其他对象,如oButton、other;g:表示一个全局变量,例如:gUserName,gLoginTime;JScript是一种区分大小写的语言。创建合法变量名应遵循以下规则:
请注意,第一个字符不能是数字。它可以后跟任何字母或数字和下划线,但不能是空格。变量名不能是保留字。
Javascript是一种弱类型语言,JavaScript会忽略额外的空格。您可以在脚本中添加空格,以提高其可读性。
Var是javascript的保留字,表示变量描述跟在后面,变量名是用户自定义的标识符,变量之间用逗号隔开。
如果变量已声明但未赋值,则该变量存在,其值为未定义的Jscript值。
强制类型转换
在JScript中,您可以对不同类型的值执行操作,而不用担心Jscript解释器生成异常。相反,JScript解释器会自动将一种数据类型更改(强制转换)为另一种数据类型,然后执行操作。例如:
运算结果的数值被添加到字符串中,以强制将数值转换为字符串。将布尔值添加到字符串会强制将布尔值添加到字符串中。将数值添加到布尔值会将布尔值强制转换为数值。若要将字符串显式转换为整数,请使用parseInt方法。若要将字符串显式转换为数字,请使用parseFloat方法。
JavaScript变量的生存期:在函数中声明变量时,只能在函数中访问。当函数退出时,该变量将被撤销。这样的变量称为局部变量。您可以在不同的函数中使用同名的局部变量,因为只有声明变量的函数才能识别它们。如果在函数外声明变量,页面上的所有函数都可以访问该变量。这些变量的生存期从声明后开始,到页面关闭时结束。
Js可变思维导图
2.2.js的数据类型
jscript主要有三种数据类型,两种复合数据类型和两种特殊数据类型。
主要(基本)数据类型
字符串数字布尔复合(引用)数据类型
对象数组特殊数据类型
Null `未定义的字符串数据类型:字符串数据类型用于表示JScript中的文本。在js中,虽然双引号(')和单引号(')都可以表示字符串,但它们之间几乎没有区别。但是只有双引号(')用来表示该字符串被认为是最好的。
字符串值是零个或多个Unicode字符(字母、数字和标点符号)排列在一起的字符串。
什么是Unicode?
Unicode为每个字符提供了一个唯一的数值,无论平台、程序或语言如何。开发Unicode是为了提供一种统一的编码来处理世界上的所有字符。
数字数据类型
我们需要理解,JScript在内部将所有数值表示为浮点值,因此在Jscript中整数和浮点值没有区别。
布尔数据类型
布尔(逻辑)只能有两个值:真或假。
Js数组和对象
详见我的文章-javascript学习总结-数组和对象部分
空数据类型:可以通过给变量赋值来清除变量的内容。
Jscript中运算符的类型将报告空值作为对象类型,而不是空类型。
html xmlns=' http://www . w3 . org/1999/XHTML ' XML : lang=' en ' head meta http-equiv=' Content-Type ' Content=' text/html;charset=UTF-8'/title/title脚本类型='text/javascript' alert(类型为null);/script/headbody/body/htmlnull用于指示尚不存在的对象,这通常用于指示函数试图返回不存在的对象。
未定义的数据类型:
在以下情况下会返回未定义的值:
对象属性不存在,变量已声明但从未赋值。null和undefined之间的区别
警报(类型未定义);//输出“未定义”警报(类型为null);//输出“object”警报(null==undefined);//输出‘true’ECMAScript认为undefined是从null派生的,所以将它们定义为相等。
alert(null===未定义);//输出“false”警报(type of null==type of undefined);//输出“false”null不同于未定义的类型,因此输出“false”。并且===代表绝对相等,其中null===未定义的输出为false
此外,这里还介绍了一个重要的数据类型——。
参考数据类型
javascript引用数据类型是存储在堆内存中的对象。JavaScript不允许直接访问堆内存空间中的位置和堆内存空间的操作,而只允许通过堆栈内存中操作对象的引用地址。因此,存储在堆栈内存中的引用类型数据实际上是堆内存中对象的引用地址。有了这个引用地址,您可以快速找到存储在堆内存中的对象。
让我们演示这个参考数据类型分配过程
自然,将name属性添加到obj2实际上是将name属性添加到堆内存中的对象。obj2和obj1只存储堆栈内存中堆内存对象的引用地址,虽然它们也被复制,但它们指向同一个对象。因此,改变obj2会导致obj1改变。
基本类型值是指存储在堆栈内存中的简单数据段,也就是说,这些值完全存储在内存中的一个位置。
引用类型值指的是存储在堆内存中的对象,也就是说,存储在变量中的实际上只是一个指针,它指向内存中存储对象的另一个位置。
简而言之,堆内存存储引用值,堆栈内存存储固定类型值。
在ECMAScript中,变量可以有两种类型的值,即原始值和引用值。原始值存储在堆栈中的简单数据段中,也就是说,它们的值直接存储在变量访问的位置。引用值是存储在堆中的对象,也就是说,存储在变量中的值是指向存储对象的内存的点。
脚本类型=' text/JavaScript " var box=new Object();//创建一个引用类型var box=' lee//基本类型值是string box.age=23//在基本类型值中添加属性很奇怪,因为只有对象才能添加属性。alert(box . age);//不是引用类型,不能输出;/script3的运算符。JScript
优先级:指操作者的操作顺序,先算哪个部分。组合的:同一个优先算子的计算顺序,是从左到右还是从右到左。
数据类型转换
字符串()转换为字符串类型数字()转换为数字类型布尔()转换为布尔类型
ParseInt:将字符串转换为整数。从字符串的开头开始解析,在第一个非整数位置停止解析,并返回之前读取的所有整数。如果字符串不以整数开头,则返回NaN。例如,parseInt(“150 hi”)返回的值是150,parseInt(“hi”)返回的值是NaN。ParseFloat:将字符串转换为浮点数。从字符串的开头开始解析,在第一个非整数位置停止解析,并返回之前读取的所有整数。如果字符串不以整数开头,则返回NaN。例如,parseFloat('15.5 hi ')返回的值是15.5,parseFloat('hi 15.5 ')返回的值是NaN。
Eval:将字符串计算为javascript表达式,并返回执行结果;如果没有结果,则返回undefined。
4.js过程控制
对于js过程控制语句,这里只有少数难以理解。其他的就不详细描述了。随后附上一张思维导图。1 .对于.in语句对应于每个对象或数组的每个元素,并执行一个或多个语句。
For(对象|数组中的变量)语句参数:
变量:必选。变量,可以是对象的任何属性或数组的任何元素。对象,数组:可选。要遍历的对象或数组。声明:可选。要针对对象的每个属性或数组的每个元素执行的一条或多条语句。它可以是复合语句。
虽然条件控制语句(如if语句)只要求在执行多个语句时使用代码块(从左花括号“{”开始,到右花括号“}”结束),但最佳做法是始终使用代码块。
if(args)alert(args);//容易出错的if(args){ alert(args);//推荐}
js过程控制语句的思维导图
5.js函数
函数是事件驱动的或可重用的代码块,在调用时执行。
Jscript支持两种函数:一种是语言内部的函数,另一种是自己创建的。允许JavaScript函数没有参数(但不能省略包含参数的括号),或者可以将参数传递给函数使用。
关于函数的更多知识,请访问我的另一篇文章:javascript学习总结(4)函数函数
物体的组成
方法——功能:过程和动态属性——变量:状态和静态最后附上前人总结的思维导图: