一、简单了解JS
1. JavaScript(简称JS)是作为开发Web页面的脚本语言。
2. JS是从1995年由网景公司的布兰德开发。
3. JavaScript的标准是ECMAScript。
4. JS代码是从上往下执行的。
二、变量
1. 变量名的值可以重复赋值(值可以修改),变量可以重复声明。
2. JS中“+”号很特殊,只要是和字符串相加都会变成字符串。
3. var声明(var n = 1;),其中var是声明关键字,n是变量名字,=是赋值号,1是值。
4. 变量规范:①名字可以包含字母,数字,_,$。 ②名字不能以数字开头,严格区分字母大小写。 ③名字不能使用关键字保留字。比如,var、if、for、in等。
5. JavaScript是轻量级解释型语言。
6.JS必须写在html页面里的script标签内,script标签一旦使用src加载了外部JS文件后,这个script标签里就不能写JS语句了。
7. JS有3种书写方式:行内式、内嵌式、外部式
8. 警告框:alert;
输入框:prompt;(输入框里的内容永远都是字符串)
问询框:confirm
9. 变量作用域:使用var声明的变量表示是局部变量,它的有效范围是当前作用域。
10. 特殊数值
JavaScript定义了几个特殊的数值常量:
①Infinity:无穷大。当数值超过浮点型所能够表示的范围;反之,负无穷大为-Infinity,可以说无穷大表示数值达到了计算机理解不了的位数(长度)。
②NaN:非数值。不等于任何数值,包括自己。如当0除以0时会返回这个特殊值,一般出现在其他值想要转化成数字的时候,有的值是无法转成数字的用NaN表示。
③Number.MAX_VALUE:js中最大的数字1.7976931348623157e+308
④Number.MIN_VALUE:5e-324
三、数据类型
1.基本/基础/原始/简单数据类型:
null:表示空值,不占据计算机的存储空间
undefined:表示变量定义了但未赋值
number:数字类型
string:字符串类型
boolean:布尔值类型(只有两个值,true和false)
2.null和undefined的区别是什么?
null表示值是空的;undefined表示变量已定义但未赋值
3.使用var和不使用var声明的变量有什么区别?
var声明的变量只在当前作用域生效
不使用var声明的变量全局生效
4.JS的特性之一:变量提升。将变量的声明提升至当前JS文件的最顶部。变量提升只是将声明提升,值留在原地。
目的是为了减少非标准使用下的报错。
5.JS的另一个特性——单线程,遇到报错就停止。
6.字符串必须使用单引号或双引号
字符串可以是空的字符串
字符串双引号或单引号里可以嵌套另外一种字符串的引号
字符串里空格也是占位的
7.获取字符串的长度:console.log(变量名.length)
8.“\n”表示换行;“\”转义符
四、判断数据类型
1.typeof:语法 typeof 变量名
null和数组类型会被判断为object,NaN会被判断为number。
2.constructor:语法 变量名.constructor
constructor是object的原型属性。undefined和null没有constructor属性,不能够直接读取,否则会报错。
3.toString:语法 toString()
toString可以检测所有数据类型,它能够返回当前对象的字符串表示。
4.测试发现,不同类型对象调用toString()方法时返回的字符串格式并不统一,这是因为不同类型的子类在继承object的原型方法toString时重写了该方法。如果在对象上调用object的原型方法toString(),就会返回统一格式的字符串表示。例如:
var a = 1;
var b = “你好”;
var c = null;
console.log(object.prototype.toString.apply(a));
表示为“[object Number]”
5.数据类型转换:隐式转换和显示转换
隐式转换:js自己做的类型转换。+,-,*,/,%等都是隐式转换。
显示转换:Number、toString、Boolean等js里内置的类都是显示转换。
6.转换为小数格式字符串:toFixed()
能够把数值转换为字符串,并显示小数点后的指定位数
7.parseInt是一个全局方法,它可以把值转换为整数。转换的过程如下:
①先解析位置0处的字符,如果不是有效数字,则直接返回NaN
②如果位置0处的字符是数字,或者可以转换为有效数字,则继续解析位置1处的数字,如果不是有效数字,则直接返回位置0处的有效数字。
③以此类推,按照从左到右的顺序,逐个分析每个字符,知道发现非数字字符位置。
④parseInt()将把前面分析合法的数字字符全部转换为数值并返回。
注意:浮点数中的点对于parseInt()来说属于非法字符,因此不会转换小数部分的值。
8.parseFloat()也是一个全局方法,它可以把数值转换为浮点数,即它能够识别第一个出现的小数点,而第二个小数点被视为非法。解析过程与parseInt()方法相同。
9.简单类型和引用类型:js中把数据分为简单类型值和引用类型值
简单类型值:存储在栈内存中,按值访问,可直接访问,访问速度快,占据空间小。
引用数据类型:存储在堆内存中,由多个值组成的数据我们称为引用数据类型(object,array),占据空间大,按共享访问。
五、运算符
1.表达式一定会有返回值:return
2.①“+、-、*、/、%” 数字运算符
②“>”大于号,求前面的值是否大于后面的值。
③“<”小于号,求前面的值是否小于后面的值。
④“>=”大于等于号,求前面的值是否大于等于后面的值。
⑤“<=”小于等于号,求前面的值是否小于等于后面的值。
⑥“!”非,取反,求反。
⑦“||”或,如果前面的值为true则不执行后面的,否则执行
⑧“&&”与,必须前后的值都为true,否则得到的是false
⑨“++”累加,每次给初始值+1
⑩“- -”累减,每次给初始值-1
3.三元运算语法:表达式或值 ? 为真的时候执行的结果 : 为假的时候执行的结果
三元运算有返回值⭐
4.“++”在前和“++”在后的区别:++在前先计算后赋值,++在后先赋值后计算。
5.“,”运算符,用来一次声明多个变量。
6.对象:无序数据的集合,使用键值对(属性名和属性值)的形式存储数据,用一对花括号包裹。键值对之间用逗号隔开。
7.数组:有序数据的集合,使用[ ]包裹值,每个值都是单独的,多个值用逗号隔开。使用数组里的数据用下标(索引)取,下标从0开始。
六、语句
1.语句规范
①分号“;”,请在每条可执行的语句后面添加分号。
②JavaScript会忽略多个空格,您可以向脚本添加空格,以增加可读性。
③JavaScript语句可以用花括号组合在代码块中。
2.if . else语句:
if (){真的} else {假的}(if求真,判断圆括号内的结果是不是真的,花括号表示代码块执行js语句的)
3.if和三元运算的区别:
①三元运算必须是“?”和“:”成对的;if可以单独使用。
②三元运算有返回值,if没有。
4.switch:流程控制语句的有一种写法。
语法:使用switch关键字调用,()里是匹配的值,匹配项是每一个case,写在{}内,每个case都应该给break用于终止向下执行。如果没有可匹配的项,最后应该给一个默认匹配项default。
5.switch、if和三元运算都是等同的一类语言,都是条件执行语句,语法不同,switch相对而言更加优雅。