标签:10 console log 17 JavaScript JS 2020.8 false true
JavaScript 是世界上最流行的语言之一,是一种运行在客户端的脚本语言
(Script 是脚本的意思)
脚本语言:不需要编译,运行过程中由 js 解释器( js 引擎)逐行来进行解释并执行
JS是单线程
JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。这是因为Javascript这门脚本语言诞生的使命所致一JavaScript 是为处理页面中用户的交互,以及操作DOM而诞生的。比如我们对某个DOM元素进行添加和删除操作,不能同时进行。应该先进行添加,之后再删除。
单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。如果前一个任务耗时很长,后一个任务就不得不一直等着。
这样所导致的问题是:如果 JS 执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的感觉。
JavaScript的作用
表单动态校验(密码强度检测)( JS 产生最初的目的 )
网页特效
服务端开发(Node.js)
桌面程序(Electron)
App(Cordova)
控制硬件-物联网(Ruff)
游戏开发(cocos2d-js)
浏览器分成两部分:渲染引擎和JS 引擎
渲染引擎:用来解析HTML与CSS,俗称内核,比如chrome浏览器的blink,老版本的webkit
JS引擎:也称为JS解释器。用来读取网页中的JavaScript代码, 对其处理后运行,比如chrome浏览器的V8
注:浏览器本身并不会执行JS代码,而是通过内置 JavaScript 引擎(解释器) 来执行 JS 代码 。JS 引擎执行代码时逐行解释每一句源码(转换为机器语言),然后由计算机去执行,所以 JavaScript 语言归为脚本语言,会逐行解释执行。
同步任务和异步任务
同步:前一个任务结束后再执行后一个任务,程序的执行顺序与任务的排列顺序是一致的、同步的。比如做饭的同步做法:我们要烧水煮饭,等水开了(10分钟之后),再去切菜,炒菜。
异步:你在做一件事情时,因为这件事情会花费很长时间,在做这件事的同时,你还可以去处理其他事情。比如做饭的异步做法,我们在烧水的同时,利用这10分钟,去切菜,炒菜。
JS执行机制(事件循环)
JS执行机制(事件循环)
浏览器做的工作大致分为以下几步:
加载:根据请求的URL进行域名解析,向服务器发起请求,接收文件(HTML、JS、CSS、图象等)。
解析:对加载到的资源(HTML、JS、CSS等)进行语法解析,建议相应的内部数据结构(比如HTML的DOM树,JS的(对象)属性表,CSS的样式规则等等)
渲染:构建渲染树,对各个元素进行位置计算、样式计算等等,然后根据渲染树对页面进行渲染(可以理解为“画”元素)这几个过程不是完全孤立的,会有交叉,比如HTML加载后就会进行解析,然后拉取HTML中指定的CSS、JS等。
JavaScript的组成:
ECMAScript:是由ECMA 国际(原欧洲计算机制造商协会 European Computer Manufacturers Association)进行标准化的一门编程语言,这种语言在万维网上应用广泛,它往往被称为 JavaScript或 JScript,但实际上后两者是 ECMAScript 语言的实现和扩展。
ECMAScript:规定了JS的编程语法和基础核心知识,是所有浏览器厂商共同遵守的一套JS语法工业标准。
DOM (Document Object Model)文档对象模型:是W3C组织推荐的处理可扩展标记语言的标准编程接口。通过 DOM 提供的接口可以对页面上的各种元素进行操作(大小、位置、颜色等)
BOM (Browser Object Model) 浏览器对象模型:它提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。通过BOM可以操作浏览器窗口,比如弹出框、控制浏览器跳转、获取分辨率等。
有3种书写位置:1.行内、2.内嵌、3.外部。
单行注释: // 快捷键:ctrl + /
多行注释:/* 内容 */ 快捷键:ctrl + shift + /
JavaScript输入输出语句:
alert(msg) 浏览器弹出警示框
console.log(msg) 浏览器控制台打印输出信息
prompt(info) 浏览器弹出输入框,用户可以输入
注:alert() 主要用来显示消息给用户,console.log() 用来给程序员自己看运行时的消息。
变量:就是一个装东西的盒子。
是用于存放数据的容器。 我们通过 变量名 获取数据,甚至数据可以修改。
本质:变量是程序在内存中申请的一块用来存放数据的空间。类似我们酒店的房间,一个房间就可以看做是一个变量。
变量是JS中的一个容器。用来装载一些数据。
特点: 每当有代码使用到这个变量,就会使用这个变量容器中的数据。
var 变量名 = 变量值;
demo: var a = 10;
含义:
在内存中开辟了一个空间
空间的名字叫做a
在空间中存放了数据 10.
变量命名规范:
整体由 数字、 字母、 下划线(_)、 美元符号($) 组成
不可以以数字开头
不可以使用关键字、保留字作为变量名称
JS变量名称严格区分大小写(对大小写敏感)
推荐使用驼峰命名法
变量特点:
变量在被使用的时候是不可以加双引号的
变量在被使用的时候使用的是所保存的值
变量只可以保存一个值
等号(=)不是比较的意思是赋值的意思把等号右边的数据或者计算结果赋值给等号左边
左边通常是变量
数据类型:指的是一门语言中对不同数据的划分。
JS中的数据类型一共有6种。分为两大类: 基本类型、引用类型
基本数据类型 :字符串、数字、布尔、undefined、null
字符串:使用单引号’ ’、双引号” ” 作为字符串的开启和结束标记
注: 不可以使用一个单引号加一个双引号 或者 一个双引号加一个单引号去定义字符串。这是不合法的
转义字符
转义 在字符串中的单引号或者双引号之前 使用\
嵌套 如果想要在字符串中出现单引号,那就使用双引号去定义字符串 反之亦然
转义符 |
解释说明 |
\n |
换行符,n 是 newline 的意思 |
\ \ |
斜杠 \ |
' |
' 单引号 |
" |
”双引号 |
\t |
tab 缩进 |
\b |
空格 ,b 是 blank 的意思 |
数字:数字就是数学中的数字。
十进制: 10、 123、 123.333等,逢10进1。
八进制: 077、 012 注: 以0开头 不可以出现8和8以上的数字, 逢8进1。
二进制: 0b1010101001 注: 以0b开头 不可以出现2和2以上的数字, 逢2进1。
十六进制: 0xfff 注: 以0x开头 单个位数的最大值为f, 逢16进1。
特殊的数字: NaN(not a number) 表示不是一个数
Infinity 表示无穷大
布尔值:布尔数据类型只有两个值: true false
undefined(特殊类型)只有一个值 就是undefined
null(特殊类型)只有一个值 就是null
判定数据类型
方式1: typeof 值
方式2: typeof(值)
数据类型转换
转换为符串
toString() 和 String() 使用方式不一样。
三种转换方式,更多第三种加号拼接字符串转换方式, 这一种方式也称之为隐式转换。
转换为数字型(重点)
注意 parseInt 和 parseFloat 单词的大小写,这2个是重点
隐式转换是我们在进行算数运算的时候,JS 自动转换了数据类型
转换为布尔型
代表空、否定的值会被转换为 false ,如 ''、0、NaN、null、undefined
其余值都会被转换为 true
运算符
数学运算符
+ 连字符 在表达式中任意一侧是字符串时,就会当作连字符处理 数学中的加法
- 数学中的减法
* 数学中的乘法
/ 数学中的除法
% 模(求余)运算 数学中的求模
简写形式:
a += 10;
a = a + 10;
a -= 10;
a = a - 10;
a *= 10;
a = a * 10;
a /= 10;
a = a / 10;
a %= 10;
a = a % 10;
关系运算符(比较运算符):关系运算符只会返回布尔值
>大于
console.log(1 > 2); // false
console.log(2 > 1); // true
>= 大于等于
console.log(2 >= 2); // true
console.log(1 >= 2); // false
< 小于
console.log(1 < 2); // true
console.log(2 < 1); // false
<= 小于等于
console.log(1 <= 2); // true
console.log(2 <= 1); // false
== 相等(只比较值 不比较数据类型)
console.log(1 == 1); // true
console.log(1 == '1'); // true 数字1和字符串1比较结果为真
=== 全等(既比较值 也比较数据类型)
console.log(1 === 1); // true
console.log(1 === '1'); // false
!= 不相等(只比较值 不比较数据类型)
console.log(1 != 1); // false
console.log(1 != '1'); // false
!== 不全等(既比较值 也比较数据类型)
console.log(1 !== 1); // false
console.log(1 !== '1'); // true
等号比较:
= 赋值 把右边给左边
== 判断 判断两边值是否相等 (注意此时有隐式转换)
===全等 判断两边的值和数据类型是否完全相同
逻辑运算符
&& 逻辑与
true && true // true
true && false // false
|| 逻辑或
false || false // false
false || true // true
true || true // true
! 逻辑非
!true // false
!false // true
总结 && 有假就假 都真才真 || 有真就真 都假才假 只能够写在某一个变量或者值的左侧 会对它进行取反操作 最终结果为true或者false
自增自减运算符(递增和递减运算符)
++ 自增运算符 让一个变量保存的数 +1 再赋予变量自身
-- 自减运算符 或者 -1 再赋予变量自身
如果出现在前面: ++变量 变量的使用前会先+1 再参与运算
如果出现在后面: 变量++ 变量的使用会先参与运算, 再+1
var a = 10;
var b = a-- + --a;
console.log(b); // 18
运算符优先级
解释型语言和编译型语言 执行过程
标识(zhi)符:就是指开发人员为变量、属性、函数、参数取的名字。
标识符不能是关键字或保留字。
关键字:是指 JS本身已经使用了的字,不能再用它们充当变量名、方法名。
包括:break、case、catch、continue、default、delete、do、else、finally、for、function、if、in、instanceof、new、return、switch、this、throw、try、typeof、var、void、while、with 等。
保留字:实际上就是预留的“关键字”,意思是现在虽然还不是关键字,但是未来可能会成为
关键字,同样不能使用它们当变量名或方法名。
包括:boolean、byte、char、class、const、debugger、double、enum、export、extends、fimal、float、goto、implements、import、int、interface、long、mative、package、private、protected、public、short、static、super、synchronized、throws、transient、volatile 等。
标签:10,console,log,17,JavaScript,JS,2020.8,false,true
来源: https://www.cnblogs.com/gino-blogs/p/14093256.html
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。