一、简单了解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相对而言更加优雅。