JS
背景及注意事项
- JS是一种脚本语言,会逐行解释执行,编译型的语言会等编译完成之后再去执行,通过浏览器的内置JS引擎来进行解析。还有一部分渲染引擎用来解析HTML和CSS解释器,俗称内核
- 组成ECMAScript语法,DOM页面文档对象模型,BOM浏览器对象模型
- 和CSS差不多分为行内,内嵌和外部
- 使用Unicode可以用\u{1F600}打印出一个笑脸的符号(16进制数来表示)
- Unicode转义序列也可以出现在注释中,但因为注释会被忽略,所以注释中的转义序列会被作为ASCAII码进行处理
- Js中字符串是16位值不可修改的有序序列,每一个值表示一个Unicode字符,最常用的Unicode是16位的,可以用字符串中的一个元素来表示。码点超出16位的可以用两个字符串来进行表示
- 要学会经常查阅文档,百度,W3C
一、数据的存储单位
- bit位:最小的储存单位,可以储存一个0或1
- byte字节:1B=8b
- KB千字节:1KB=1024B
- MB兆字节:1MB=1024KB
- GB吉字节:1GB=1024MB
- TB太字节:1TB=1024GB
二、程序运行
- 打开程序时,先从硬盘中把程序的代码加载到内存中
- CPU执行内存中的代码
- 之所以要存在内存的主要原因,是因为CPU运行的太快了,如果从硬盘中读取数据会浪费,CPU的性能,所以才使用存储速度更快的内存来保存运行时的数据
三、基本的函数
-
alert()用于弹出警示框
-
console.log()浏览器控制台打印输入信息,给程序员测试用的
想要同时输出多个变量中间用逗号隔开
-
prompt(请输入你的年龄)浏览器弹出输入框,用户可以输入
-
isNaN()用这个方法来判断非数字并返回一个值,如果是数字返回的是false,如果不是数字返回的是true
-
可以用(typeof 变量名)来进行对变量类型的输出,对null型的输出结果是object
-
转换为布尔型Boolean()函数,代表空、否定的值会被转换为false如0、NaN、null、underfined
四、基本的知识
-
可以添加/n来进行文字的换行
-
推荐使用外部引入的
引用外部JS的script标签中间不可以写代码
-
"two">"three"返回值为ture
-
单行注释:Ctrl+/,多行shift+alt+a
-
==在进行比较的时候会将字符型默认的转换为整数型,===必须两边的值和类型都全部一样
-
对&&进行输出时,如果表达式1的结果为真则返回表达式2,如果表达式1为假,那么返回表达式1
-
对||进行输出时,如果表达式1的结果为真则返回表达式1,如果表达式1为假,那么返回表达式2
-
短路操作let number=0;console.log(123||number++)//123;console.log(number)//0;
-
特殊情况下在函数内不使用var声明变量也是全局变量
-
块级作用域,在{ }里面定义的变量外面不可以调用
-
全局对象的初始属性并不是保留字,在Node中有一个global属性,值为全局变量本身,在Node程序中始终可以用global来引用全局对象,globalThis作为在任何上下文引用全局变量的标准方式
-
对象(包括数组和函数)不是按值比较的,两个不同的对象即使有相同的属性以及值他们也是不相等的
-
对象有的时候称为引用类型,对象是按照引用进行比较的,两个对象值且仅当他们引用同一个底层对象的时候才是相等的(类似于指针)
五、变量
-
Number数字型包括整型和浮点型
十六进制的范围0-9以及A-F
在八进制的前面加0,在十六进制的前面加0x
-
Boolean布尔类型,包括ture,false,等价于1或0
-
String字符串类型,字符串都带引号
-
Undefined声明变量却没有赋值
-
Null声明变量为空值
-
浮点数的计算会有问题,不能拿浮点数来进行比较是否相等
-
JS是一种弱类型或者说是动态语言,意味着不用提前声明变量的类型,在运行过程中,类型会被自动确定
-
声明变量let,计算机会自动为变量分配内存空间和C差不多
let name=prompt("请输入您的名字");
alert(name);输出名字
-
命名规范
- 由字母,数字,下划线,美元符号组成
- 严格区分大小写
- 不能以数字开头
- 不能是关键字,保留字
- 必须有意义
- 遵循驼峰命名法:首字母大写后面的首字母需要大写
- 中间不能有空格
- 类名首字母一般大写
-
转换为数字型parslnt(string)函数将string类型转换为整数类型
parseFloat(string)函数转换为浮点类型的值
Number()强制转换函数
js的隐式转换用算术运算符转换为数值型,'123'-'120'也可以得到数字
parseInt()将字符型转换为整型,向下取整,120px得到的是120,带有字符的会得到NaN
-
3/2//=>1.5
-
和C一样具有加加减减+=等操作
-
只有null和underfined是不能调用方法的值
-
==操作符已经被弃用,取而代之的是不会做类型转换的严格等操作符===
-
使用二进制或八进制表示数,分别使用前缀0b和0o
-
**进行取幂操作
-
涉及到上溢出、下溢出或被0除的时候不会发生错误,结果是一个特殊的无穷值Infinity
-
下溢出发生在数值操作的结果比最小可表示的数值更接近0的情况下,此时返回值为0,如果下溢出来自于负数那么返回的结果是-0
-
0除以0是没有意义的结果是一个非数值NaN,无穷除无穷、负数平方根或者无法转换为数值的非数值作为算数操作符的操作数返回的也是非数值
-
非数值与任何值的比较都不相等,也不能等于自己,必须用x!=x或Number.isNaN(x)来进行判断
-
二进制浮点数无法表示0.1这么简单的数,是所有使用二进制浮点数的编程语言的共同问题
-
BigInt字面量写作一串数字后面跟着一个小写字母n,可以用BigInt()函数把数值或字符串转化为BigInt型
-
与常规的数值运算类似,只不过除法会丢弃余数并向下取整/%和C中的用法相同
-
0===0n返回的是false
-
Math对象的任何函数都不接受BigInt操作数
-
使用const进行初始化常量
-
声明常量的一个默认约定是全部的字母大写
-
Js中允许在循环里面进行变量的定义和赋值操作,多个相同的操作中间使用,进行相隔
-
如果在HTML中使用