js基础术语和概念总结
JS核心知识梳理

JS核⼼知识梳理前⾔本⽂⽬标从JS的运⾏,设计,数据,应⽤四个⾓度来梳理JS核⼼的知识点主题⼤纲1. JS运⾏变量提升执⾏上下⽂作⽤域let作⽤域链闭包事件循环2. JS设计原型原型链thiscallapplybindnew继承3. JS数据数据类型数据的存储(深浅拷贝)数据类型判断(隐式转换,相等和全等,两个对象相等)数据的操作(数组遍历,对象遍历)数据的计算(计算误差)4. JS应⽤防抖,节流,柯⾥化⼀. JS运⾏⼤概分为四个阶段1. 词法分析:将js代码中的字符串分割为有意义的代码块,称为词法单元浏览器刚拿到⼀个JS⽂件或者⼀个script代码段的时候,它会认为⾥⾯是⼀个长长的字符串这是⽆法理解的,所以要分割成有意义的代码块,⽐如: var a = 12. 语法分析:将词法单元流转换成⼀颗抽象语法树(AST),并对⽣成的AST树节点进⾏处理,⽐如使⽤了ES6语法,⽤到了let,const,就要转换成var。
为什么需要抽象语法树呢?抽象语法树是不依赖于具体的,不依赖于语⾔的细节,⽅便做很多的操作另⼀⽅⾯说,现在有许多语⾔,C,C++,Java,Javascript等等,他们有不同的语⾔规范但是转化成抽象语法树后就都是⼀致的了,⽅便编译器对其进⾏进⼀步的增删改查等操作,3. 预解析阶段:会确定作⽤域规则变量和函数提升4. 执⾏阶段:创建执⾏上下⽂,⽣成执⾏上下⽂栈执⾏可执⾏代码,依据事件循环1.作⽤域指定了函数和变量的作⽤范围分为全局作⽤域和函数作⽤域,JS不像C,JAVA语⾔⼀样,没有块级作⽤域,简单说就是花括号的范围2.变量和函数提升全局变量和函数声明会提升函数声明⽅式有三种,function foo() {}var foo = function () {}var foo = new Function()可归为两类,直接创建和变量赋值变量赋值函数和赋值普通变量的优先级按位置来,变量名相同前者被覆盖函数直接创建优先级⾼于变量赋值,同名取前者,与位置⽆关,也就是说函数直接创建即使再变量声明后⾯,也是优先级最⾼3. 执⾏上下⽂有不同的作⽤域,就有不同的执⾏环境,我们需要来管理这些上下⽂的变量执⾏环境分为三种,执⾏上下⽂对应执⾏环境全局执⾏环境函数执⾏环境eval执⾏环境(性能问题不提)1. 全局执⾏上下⽂先找变量声明,再找函数声明2. 函数执⾏上下⽂先找函数形参,和变量声明把实参赋值给形参找函数声明多个函数嵌套,就会有多个执⾏上下⽂,这需要执⾏上下⽂栈来维护,后进先出执⾏上下⽂⾥包含着变量环境和词法环境变量环境⾥就包含着当前环境⾥可使⽤的变量当前环境没有⽤哪的, 这就说到了作⽤域链4. 作⽤域链引⽤JS⾼程的定义:作⽤域链来保证对执⾏环境有权访问的变量和函数的有序访问变量的查找顺序不是按执⾏上下⽂栈的顺序,⽽是由词法作⽤域决定的词法作⽤域也就是静态作⽤域,由函数声明的位置决定,和函数在哪调⽤⽆关,也就js这么特殊5. 静态作⽤域和动态作⽤域词法作⽤域是在写代码或者定义时确定的⽽动态作⽤域是在运⾏时确定的(this也是!)var a = 2;function foo() {console.log(a); // 静态2 动态3}function bar() {var a = 3;foo();}bar();复制代码闭包由于作⽤域的限制,我们⽆法在函数作⽤域外部访问到函数内部定义的变量,⽽实际需求需要,这⾥就⽤到了闭包引⽤JS权威指南定义:闭包是指有权访问另⼀个函数作⽤域中的变量的函数1. 闭包作⽤for循环遍历进⾏事件绑定输出i值时为for循环的长度+1这结果显⽰不是我们想要的, 因为JS没有块级作⽤域,var定义的i值,没有销毁,存储与全局变量环境中在事件具体执⾏的时候取的i值,就是全局变量中经过多次计算后的i值for(var i = 0;i < 3;i++){document.getElementById(`item${i+1}`).onclick = function() {console.log(i);//3,3,3}}复制代码闭包特性:外部函数已经执⾏结束,内部函数引⽤外部函数的变量依然保存在内存中,变量的集合可称为闭包在编译过程中,对于内部函数,JS引擎会做⼀次此法扫描,如果引⽤了外部函数的变量,堆空间创建换⼀个Closure的对象,⽤来存储闭包变量利⽤此特性给⽅法增加⼀层闭包存储当时的i值,将事件绑定在新增的匿名函数返回的函数上for(var i = 0;i < 3;i++){document.getElementById(`item${i+1}`).onclick = make(i);}function make(e) {return function() {console.log(e)//0,1,2};复制代码闭包注意我们在不经意间就写成了闭包,内部函数引⽤外部函数的变量依然保存在内存中,该销毁的没有销毁,由于疏忽或错误造成程序未能释放已经不再使⽤的内存,就造成了内存泄漏同时注意闭包不会造成内存泄漏,我们错误的使⽤闭包才是内存泄漏事件循环JS代码执⾏依据事件循环JS是单线程,通过异步保证执⾏不被阻塞1. 执⾏机制简单说就是,⼀个执⾏栈,两个任务队列发现宏任务就放⼊宏任务队列,发现微任务就放⼊微任务队列,执⾏栈为空时,执⾏微任务队列所有微任务,再取宏任务队列⼀个宏任务执⾏如此循环2. 宏&微任务 macroTask: setTimeout, setInterval, I/O, UI rendering microTask: Promise.then⼆. JS设计1. 原型1. JS的设计有new操作符,构造函数,却没有类的概念,⽽是使⽤原型来模拟类来实现继承2. JS设计⼼路历程JS在设计之初,给的时间较短,并且定义为简单的⽹页脚本语⾔,不⽤太复杂,且想要模仿Java的理念,(这也是为什么JS叫JavaScript的原因)因此就借鉴了Java的对象、构造函数、new操作符理念,⽽抛弃掉了了复杂的class(类)概念3. 继承机制需要有⼀种继承的机制,来把所有对象联系起来,就可以使⽤构造函数但是构造函数⽣成实例对象的缺点就是⽆法共享属性和⽅法4. prototype属性为解决上⾯问题,就引⼊了prototype属性,就是我们常说的原型为构造函数设置⼀个prototype属性,实例对象需要共享的⽅法,都放在此对象上,整个核⼼设计完成后,后⾯的API也就顺理成章原型每⼀个js对象在创建的时候就会与之关联另⼀个对象这个对象就是原型,每个对象都会从原型继承属性proto每个对象都有⼀个属性叫proto,该属性指向对象的原型构造函数的prototype属性等于实例化对象的proto属性此属性并不是ES5 中的规范属性,只是为了在浏览器中⽅便获取原型⽽做的⼀个语法糖,我们可以使⽤Object.getPrototype()⽅法获取原型constructor 原型没有指向实例,因为⼀个构造函数可以有多个对象实例但是原型指向构造函数是有的,每个原型都有⼀个constructor属性指向关联的构造函数function Per() {} // 构造函数const chi = new Per() // 实例对象chi.__proto__ === Per.prototype // 获取对象的原型也是就构造函数的prototype属性Per.prototype.constructor === Per // constructor属性获取当前原型关联的构造函数复制代码实例与原型读取实例属性找不到时,就会查找与对象关联的原型的属性,⼀直向上查找,这种实例与原型之间的链条关系,这就形成了原型链function Foo() {} = 'tom'const foo = new Foo() = 'Jerry'console.log(); // Jerrydelete console.log(); // tom复制代码2.原型链⾸先亮出⼤家熟悉的⽹图就是实例与构造函数,原型之间的链条关系实例的 proto 指向原型构造函数的 prototype 属性指向原型原型的 constructor 属性指向构造函数所有构造函数的 proto 指向 Function.prototypeFunction.prototype proto 指向 Object.prototypeObject.prototype proto 指向 null函数对象原型(Function.prototype)是负责造构造函数的机器,包含Object、String、Number、Boolean、Array,Function。
js使用手册

js使用手册JavaScript(简称JS)是一种脚本语言,用于在网页上实现交互效果和动态内容。
它是目前使用最广泛的编程语言之一,因为它可以用于开发网页应用、游戏、桌面应用等各种类型的程序。
本文将为你提供一份简明的JavaScript使用手册,介绍了JavaScript的基本语法、数据类型、函数、控制流和常见的操作等内容。
一、基本语法:1.注释:可以使用双斜杠(//)进行单行注释,或使用斜杠和星号(/*...*/)进行多行注释。
2.变量和常量:使用var关键字声明变量,使用const关键字声明常量。
JavaScript使用弱类型,所以变量可以在不同的数据类型之间进行转换。
3.数据类型:JavaScript包含了多种数据类型,包括数字、字符串、布尔值、数组、对象等。
可以使用typeof操作符来检查变量的数据类型。
4.运算符:JavaScript支持常见的算术运算符(例如+、-、*、/)和逻辑运算符(例如&&、||、!),以及比较运算符(例如==、>、<)。
5.字符串操作:可以使用+运算符来连接字符串,也可以使用字符串模板(`${...}`)来创建格式化的字符串。
二、数据类型:1.数字类型:JavaScript中的数字包括整数和浮点数。
可以进行基本的算术运算,也可以使用内置的Math对象来进行高级的数学计算。
2.字符串类型:JavaScript中的字符串以单引号('...')或双引号("...")括起来。
可以使用一系列内置的字符串方法来操作和处理字符串。
3.布尔类型:JavaScript中的布尔类型只有两个值,true和false。
可以通过逻辑运算符和比较运算符来进行布尔运算。
4.数组类型:JavaScript中的数组可以存储多个值,并根据索引进行访问。
可以使用一系列内置的数组方法来操作和处理数组。
5.对象类型:JavaScript中的对象是一种复合数据类型,可以存储键值对。
js入门基础教程

js入门基础教程JavaScript(简称JS)是一种轻量级的脚本语言,广泛应用于Web开发中。
它可以与HTML和CSS一起使用,通过在网页中嵌入js代码,使页面具有更多的交互性和动态效果。
本文将为大家介绍Javascript的入门基础知识。
1. JavaScript的历史JavaScript是在1995年由网景公司的布兰登·艾奇(BrendanEich)设计和开发的。
最初的目的是作为网页脚本语言,用来实现网页的动态效果和交互功能。
之后,它逐渐发展成一个独立的编程语言,可用于服务器端开发、桌面应用开发和移动应用开发等众多领域。
2. JavaScript的语法JavaScript的语法与Java语言类似,但它并不是Java的简化版。
它是一种解释性语言,不需要经过编译,而是由浏览器直接解释执行。
JavaScript的语法包括变量的声明、条件语句、循环语句、函数的定义等基本元素。
下面是一个简单的JavaScript程序示例:```javascript// 声明一个变量var message = "Hello, world!";// 输出变量的值console.log(message);```3. 数据类型JavaScript支持多种数据类型,包括字符串、数值、布尔值、数组、对象等。
其中,字符串用于表示文本,数值用于表示数字,布尔值用于表示真假值。
数组用于存储一组有序的值,对象用于存储键值对。
JavaScript还具有动态类型的特性,即同一个变量可以在不同的上下文中表示不同的数据类型。
4. 控制流程JavaScript中的控制流程包括条件语句和循环语句。
条件语句用于根据不同的条件执行不同的代码块,包括if语句和switch 语句。
循环语句用于重复执行一段代码,包括while循环、do-while循环和for循环。
5. 函数在JavaScript中,函数是一段可重复使用的代码块,用于实现特定的功能。
3、JavaScript运算符和表达式

var box = Infinity + Infinity;
//Infinity
var box = -Infinity + -Infinity; //-Infinity
var box = Infinity + -Infinity; //NaN,正无穷和负无穷相加等NaN
var box = 100 + '100';
3.逻辑非运算符可以用于任何值。无论这个值是什么数据类型,这个运算符都会返回一个布尔值。它 的流程是:先将这个值转换成布尔值,然后取反
注: JavaScript虽说也有& 和 |,但是这里不是做逻辑运算符,而是位运算符
七、三目运算符
三目运算符,又叫三元条件运算符 三元条件运算符其实就是后面将要学到的if 语句的简写形式。 根据条件在两个语句中执行其中的一个,使用符号 ?: 语法如下: 条件表达式?语句1:语句2 参数说明: 条件表达式,结果会被作为布尔值处理 语句1:如果条件表达式返回true则执行 语句2:如果条件表达式返回false则执行
算术运算符即算术运算符号。是完成基本的算术运算 (arithmetic operators) 符号,就是 用来处理四则运算的符号。
算数运算符分为以下:
二、算术运算符
加法运算符(+)
var box = 1 + 2;
//等于3
var box = 1 + NaN;
//NaN,只要有一个NaN 就为NaN
值 true false false false true true false false false true false
五、比较运算符(关系运算符)
相等运算符 == :判断两个操作数是否相等。 不同的数据类型会自动转换为相等的数据类 型再做比较。
js基础知识点

js基础知识点js基础知识点1、javascript概述JavaScript是一种弱类型,以对象为基础,定义的脚本语言,它可以给网页添加各种动态特性,JavaScript不需要编译就能运行,有丰富的内置函数和对象,可以在Web中读写数据,用于在Web中编写客户端脚本。
2、javascript应用JavaScript可以用在各种浏览器上,可以实现网页中的事件处理、表单处理、客户端检验、图形界面效果等。
通常JavaScript使用的目的是增强用户体验,提高网页的交互性和可用性3、javascript变量JavaScript变量有全局变量和局部变量。
它们的区别在于:1)全局变量在JavaScript脚本的所有部分都可以访问,而局部变量只能在声明它的函数内部访问。
2)局部变量只在函数内部有效,函数外部无法访问,而全局变量在函数内部外部都可以访问。
3)全局变量在整个网页的所有脚本都可以访问,只要这个网页被打开就可以,而局部变量只能在它声明的函数或语句块内访问。
4、javascript数据类型JavaScript支持6种数据类型:Undefined、Null、Boolean、Number、String 和Object。
Undefined 表示未定义,它的值是undefined。
Null 表示空值,它的值是null。
Boolean 表示布尔值,它的值是true或false。
Number表示数字,它的值是整数或小数String 表示字符串,它的值是由一系列字符组成的文本Object 表示对象,它的值是一组数据和功能的集合5、javascript函数JavaScript函数可以看作是一段可以重复使用的代码,它由一系列语句组成,用于完成特定的任务。
函数有四个特点:1)可以重复使用2)可以接收参数3)可以返回值4)可以封装函数的声明和调用函数可以使用function来声明:function functionName (parameters) {// code to be executed}函数使用functionName()来调用:functionName(parameters);函数默认有返回值,如果使用return语句来返回值,则忽略默认值,否则,函数返回值为undefined。
jsjl定向井水平水平井基础知识介绍解析

图4-7 法面扫描法 法面扫描得到的距离,是周围相关邻井到扫描井的径向距离,而方向却是反映了相对扫描井来 说:上、下、左、右的关系。
四 计算方法介绍
4.6.3 最近距离扫描法
图4-8 最近距离扫描法示意图
五 螺杆钻具
螺杆动力钻具的构造及各部分的功 能: A.旁通阀总成----是起下钻作业和 接但根时的泥浆进出的通道。在 钻进过程中旁通阀关闭。 B.马达总成----由钢制转子和固结在 外筒的橡胶定子组成。在钻井 液的推动下转子转动并带动钻头旋 转。 C.万向连轴节总成----上端连接 转子,下端连接驱动轴。其作用是 将转子的偏心运动转化为驱动轴的 同心运动。 D.轴承总成----Navi-Drill钻具有三 套轴承,两套径向轴承,一套推力 轴承。上下径向轴承起驱动轴的扶 正和稳定作用及限制钻井液的溢流 量的作用。推力轴承承受上下的轴 向载荷。 E.驱动轴总成----上端接万向连轴 节,下端接钻头。起驱动钻头转动 的作用。
二 基本计算
1.全角变化率计算公式:
cos cos1 cos 2 sin 1 sin 2 cos
2.工具造斜率计算公式:
KC 30 D
3.装置角计算公式:
cos
cos1 cos cos 2 sin 1 sin 1
4.定向方位角计算公式:
s 1 n
图4-3平衡正切法示意图
计算公式:
四 计算方法介绍
4.4 圆柱螺线法(曲率半径法)
圆柱螺线法假设两测点间的测段是一条等变螺旋角的圆柱螺线。螺线在两端点处与上下 两测点处的井眼方向相切。
图4-4 曲率半径法示意图
四 计算方法介绍
4.4 圆柱螺线法(曲率半径法)
圆柱螺线法假设两测点间的测段是一条等变螺旋角的圆柱螺线。螺线在两端点处与上下 两测点处的井眼方向相切。
jsjl定向井水平水平井基础知识介绍

图1-1 井斜角示意图
图1-2 方位角示意图
一 基本术语
6)磁偏角:磁北方位线与真北方位线并不重合,两者之间有一个夹角,这个夹角称为磁偏角。磁偏角又有东 磁偏和西磁偏角之分,当磁北方位线在正北方位线以东时,称为东偏角;当磁北方位线在正北方位线以 西时称为西偏磁偏角。• 进行磁偏角校正时按以下公式计算(图1-3): 真方位角=磁方位角+东偏磁偏角 真方位角=磁方位角-西偏磁偏角 7• )井斜变化率:是指井斜角随井深变化的快慢程度,常以Kα表示,精确的讲井斜变化率是井斜角度(α) 对井深(L• )的一阶导数。 8)井深方位变化率:实际应用中简称方位变化率,是指井斜方位角随井深变化的快慢程 度,常用KΦ表示。 9)全角变化率(狗腿严重或井眼曲率):从井眼内的一个点到另一个点,井眼前进方向变化的角度(两点处 井眼前进方向线之间的夹角),• 该角度既反映了井斜角度的变化又反映了方位角度的变化,通常称为全 角变化值。• 两点间的全角变化值γ相对与两点间井眼长度ΔL变化的快慢及为全角变化率。 10)垂深(垂直井深):即某测点的垂直深度,以H表示。• 是指井身任意一点 至转盘面所在平面的距离。 11)水平投影长度:是指自井口至测点的井眼长度在水平面上的投影长度。以 S• 表示。 12)水平位移:简称平移,是指测点到井口垂线的距离。在国外又称为闭合距 ( Closure Distance)。 13)平移方位角:又称为闭合方位角(Closure Azimuth),常用θ表示,• 是 指以正北方位线为始边顺针方向转至平移方位线上所转过的角度。 14)视平移:又称为投影位移,井身上的某点在垂直投影面上的水平位移。在 实际定向井钻井过程中,这个投影面选在设计方位线上。所以视不移也可以定 义为水平位移在设计线上的投影。 图1-3
二 基本计算
js学习总结

js学习总结学习JavaScript是现代编程的必备技能之一。
在Web开发中,JavaScript是一种广泛应用的脚本语言,可以为网页赋予动态和交互性。
学习JavaScript对于想要成为全栈开发者或前端工程师的人来说是至关重要的。
在我的JavaScript学习过程中,我总结了以下几点经验。
首先,学习语法和基本概念是理解JavaScript的关键。
我首先学习了JavaScript的基础语法,包括变量、数据类型、运算符和控制结构等。
从简单的示例开始,逐渐深入理解语言的特性和用法。
在学习的过程中,我发现通过实践编写代码是最好的学习方法,因为只有亲自动手去实验,我才能更好地理解和记住。
其次,掌握DOM(Document Object Model)和事件处理非常重要。
DOM是HTML文档的编程接口,可以用JavaScript来操作网页上的元素。
我学习了如何通过DOM方法选择和操作HTML元素,例如修改文本内容、改变样式或添加和删除元素等。
同时,我还学习了如何通过事件处理来实现网页的交互性。
事件处理允许在用户执行某些操作时触发相应的JavaScript代码。
这使得网页能够对用户的操作做出响应,并提供更好的用户体验。
第三,熟悉常用的JavaScript库和框架能够提升开发效率。
像jQuery这样的库提供了许多实用的功能和方法,使得JavaScript代码变得更简洁和易读。
另外,像React和Vue.js这样的前端框架提供了更高级和更复杂的功能,使得我们能够更轻松地构建现代化和响应式的网页应用程序。
第四,学习调试和错误处理是成为一名优秀JavaScript开发者的关键。
在编程过程中,出错是常有的事情,而且调试是解决问题的关键工具。
我学会了如何使用浏览器的控制台来调试代码,查看变量的值、打印调试信息或检查JavaScript的错误。
此外,我还了解了常见的错误类型和如何处理它们。
对于解决问题,要有耐心和坚持不懈的精神。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JavaScript基础术语和概念总结一、什么是JavaScript ?JavaScript 是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言。
使用它的目的是与HTML超文本标记语言、Java 脚本语言(Java 小程序)一起实现在一个Web页面中链接多个对象,与Web客户交互作用。
它的出现使得信息和用户之间不仅只是一种显示和浏览的关系,而是实现了一种实时的、动态的、可交式的表达能力。
二、JavaScript的特点JavaScript 是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言,主要用于创建具有交互性较强的动态页面。
其具有以下特点:1)基于对象:JavaScript 是基于对象的脚本编程语言,能通过DOM(文档结构模型)及自身提供的对象及操作方法来实现所需的功能。
2)事件驱动:JavaScript 采用事件驱动方式,能响应键盘事件、鼠标事件及浏览器窗口事件等,并执行指定的操作。
3)解释性语言:JavaScript 是一种解释性脚本语言,无需专门编译器编译,而是在嵌入JavaScript 脚本的HTML 文档载入时被浏览器逐行地解释,大量节省客户端与服务器端进行数据交互的时间。
4)实时性:JavaScript 事件处理是实时的,无须经服务器就可以直接对客户端的事件做出响应,并用处理结果实时更新目标页面。
5)动态性:JavaScript 提供简单高效的语言流程,灵活处理对象的各种方法和属性,同时及时响应文档页面事件,实现页面的交互性和动态性。
6)跨平台:JavaScript 脚本的正确运行依赖于浏览器,而与具体的操作系统无关。
只要客户端装有支持JavaScript 脚本的浏览器,JavaScript 脚本运行结果就能正确反映在客户端浏览器平台上。
7)开发使用简单:JavaScript 基本结构类似C 语言,采用小程序段的方式编程,并提供了简易的开发平台和便捷的开发流程,就可以嵌入到HTML 文档中供浏览器解释执行。
同时JavaScript 的变量类型是弱类型,使用不严格。
8)相对安全性:JavaScript 是客户端脚本,通过浏览器解释执行。
它不允许访问本地的硬盘,并且不能将数据存入到服务器上,不允许对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互,从而有效地防止数据的丢失。
三、JavaScript和Java的区别虽然JavaScript和Java有着紧密的关系,但是确实由两家不同的公司开发的不同的两个不同产品。
Java是 SUN公司推出的新一代面向对象的程序设计语言,特别适合于Internet应用程序开发;而JavaScript是Netscape 公司的产品,其目的是为了扩展Netscape Navigator 功能,而开发的一种可以嵌入Web页面中的基于对象和事件驱动的解释性语言,它的前身是Live Script;而Java 的前身是Oak 语言。
其异同点主要是以下几个方面:1)基于对象和面向对象:Java是一种真正的面向对象的语言,即使是开发简单的程序,必须设计对象。
而JavaScript是脚本语言,它是一种基于对象和事件驱动的编程语言。
2)代码格式的不同:Java是一种与HTML无关的格式,其代码以字节代码的形式保存在独立的文档中。
JavaScript 的代码是一种文本字符格式,可以直接嵌入 HTML 文档中,并且可动态装载。
编写 HTML 文档就像编辑文本文件一样方便。
四、JavaScript的基本数据类型在JavaScript中的四种基本数据类型:数值(整数和实数)、字符串型(用“”或者‘’括起来的字符或者数值)、布尔型(true或false表示)和空值。
在JavaScript中基本数据类型可以是常量,也可以是变量。
举例:1)字符串类型:---转义序列:\b 回退\f 换页\n 换行\r 回车符\t 制表符\’单引号\”双引号\\ 反斜杠2)数字类型:浮点数:12.568,整数:2563)布尔值类型:Boolean:true,false4)空值(Null):代表变量什么也不是5)未定义值(Undefined):var a//变量a 这时的状态五、JavaScript的变量变量名必须以字母或下划线开始,其他部分可以使用数字、字母、美元符和下划线构成。
JavaScript变量名区分大小写,可使用骆驼命名法:变量名以一个小写字母开始,后面的单词首字母大写且没有空格。
变量名声明以关键字var开始。
六、HTML中如何使用JavaScript?JavaScript的使用分为两种方式,一种是直接使用,另一种就是通过事件机制使用直接使用HTML中的javascript代码块会让浏览器的控制程序交给相应的javascript解释器去完成,如果是自定义的函数,javascript是不会将其执行的,除非我们在javascript代码块中直接调用了该函数,如:“直接存在”代码中的Say()函数一样,处理函数外,其他的凡在javascript代码块中存在的javascript语句,都会被直接解释并执行。
间接使用针对javascript中的函数(自定义和系统自带)说的,通过javascript的事件机制实现,其事件的具体体现就是HTML为响应这个功能而在标签中添加的一些属性,其描述的是发生在html元素上的某些行为。
具体事件如下图所示:七、JavaScript的运行机制JavaScript是一种描述性的脚本语言,它与Java或者C#等编译性语言不同之处在于它不需要进行编译成中间语言,而是由浏览器进行动态地解析与执行。
如果不了解JavaScript的运行的机制或者不能掌握JavaScript的执行顺序,那么你就不能很好的驾驭它。
那么JavaScript是怎么运行的呐?首先,我们先来了解几个重要的术语:1、代码块JavaScript中的代码块是指<script>标签分割的代码片段。
例如:Js就是按照代码块来进行编译和执行的,注意:代码块之间是相互独立的,但是变量和方法是共享的。
我们运行后会发现这种情况:上面的代码中代码块一中运行报错,但不影响代码块二的执行,这就是代码块间的独立性,而代码块二中能调用到代码一中的变量,则是块间共享性。
2、声明函数与赋值式函数Js中的函数定义有2种:声明式函数与赋值式函数声明式函数与赋值式函数的区别在于:在JS的预编译期,声明式函数将会先被提取出来,然后才按顺序执行js代码。
如果Fn()放在fn()之后的话,则会出现函数未定义错误。
3、预编译期与执行期Js的解析过程分为两个阶段:预编译期(预处理)与执行期。
预编译期JS会对本代码块中的所有声明的变量和函数进行处理(类似与C语言的编译),但需要注意的是此时处理函数的只是声明式函数,而且变量也只是进行了声明但未进行初始化以及赋值。
举例说明:<script type="text/javascript">Fn(); //执行结果:"执行了函数2",同名函数后者会覆盖前者function Fn(){ //函数1alert("执行了函数1");}function Fn(){ //函数2alert("执行了函数2");}</script><script type="text/javascript">Fn(); //执行结果:"执行了声明式函数",在预编译期声明函数及被处理了,所以即使Fn()调用函数放在声明函数前也能执行。
function Fn(){ //声明式函数alert("执行了声明式函数");}var Fn = function(){ //赋值式函数alert("执行了赋值式函数");}</script>看完上面几个术语后,相信大家对js的运行机制又有了新的认识,现在我们看个例子:<script type="text/javascript">Fn(); //浏览器报错:"undefined"</script><script type="text/javascript">function Fn(){ //函数1alert("执行了函数1");}</script>我们上面说了JS是按照代码块来顺序执行的,其实完整的说应该是按照代码块的预处理和执行的,也就是说预处理的只是执行到的代码块的声明函数和变量,而对于还未加载的代码块是没法进行预处理的,这就是边编译边处理的核心所在。
小结:js的处理机制step 1. 读入第一个代码块。
step 2. 做语法分析,有错则报语法错误(比如括号不匹配等),并跳转到step5。
step 3. 对var变量和function定义做“预编译处理”(永远不会报错的,因为只解析正确的声明)。
step 4. 执行代码段,有错则报错(比如变量未定义)。
step 5. 如果还有下一个代码段,则读入下一个代码段,重复step2。
step6. 结束。