目录
一、JS编写位置
js:从上到下执行
不推荐:把js写在标签属性内会出现结构与行为耦合,不方便维护
推荐编写方法:
可以将js写到外部文件中,通过<script>引入,有利于不同页面同时引用,利用到浏览器的缓存机制
但是一旦引入外部文件,就不能在这个内部<script>编写代码了,浏览器会忽略,除非新建一个新的<script>
<script type="text/javascript" src="js/script.js"></script>
二、注释
1.多行注释
/*
这是一个多行注释
*/
2.单行注释
//这是一个单行注释
js内严格区分大小写
js每一条语句以分号结尾 不写浏览器会自动添加,但影响性能
js会自动忽略多个空格和换行
三、变量
字面量:不可以改变的量,可以直接使用,不方便统一修改
变量存储字面量,方便改变
变量声明:let const var var没有块作用域,在块外仍可以访问
四、标识符
变量名、函数名、属性名都属于标识符
1.标识符命名规则
- 标识符中可以含有字母、数字、_、$
- 标识符不能以数字开头
- 标识符不能是ES中的关键字或保留字
- 标识符一般都采用驼峰命名法
首字母小写,每个单词的开头字母大写,其余字母小写
helloWorld xxxYyyZzz
- 类名会使用大驼峰命名法
首字母大写,每个单词开头大写
- 常量的字母会全部大写
JS底层保存标识符时实际上是采用的UTF-8编码(但不用汉字)
五、数据类型
1.字符串String
使用" "或' ',不要混用,推荐" "
var str = "hello";
var str = 'hello';
双引号不能直接嵌套双引号,可以嵌套单引号
可以使用转义字符\进行嵌套
str = "我说:\"今天\t你真好看!\"";
\" 表示 "
\' 表示 '
\n 表示换行
\t 制表符
\\ 表示\
2.数值Number
包括整数和浮点数(小数)
可以使用运算符 typeof 来检查一个变量的类型
console.log(typeof b);
JS中可以表示的数字的最大值
Number.MAX_VALUE
Number.MIN_VALUE 大于0的最小值
如果使用Number表示的数字超过了最大值,则会返回
Infinity 表示正无穷
-Infinity 表示负无穷
Infinity 可以是字面量
使用typeof检查Infinity会返回number
NaN 是一个特殊的数字,表示Not a Number
使用typeof检查一个NaN会返回number
重要点:
在JS中整数的运算基本可以保证精确
如果使用JS进行浮点运算,可能得到一个不精确的结果
所以千万不要使用JS进行对精确度要求比较高的运算,例如计算精确度高的金额
3.大整数BigInt
大整数用来表示一些比较大的整数
大整数使用n结尾,它可以表示的数字范围是无限大
4.布尔值Boolean
true:表示真
false:表示假
5.空值Null
空值类型的值只有一个,就是null,专门用来表示一个为空的对象
使用typeof检查一个null值时,会返回object
6.未定义Undefined
未定义类型的值只有一个,就是undefined
当声明一个变量,但是并不给变量赋值时,它的值就是undefined
使用typeof检查一个undefined时会返回undefined
7.Symbol
用来创建一个唯一的标识
对象中有些属性不想被用户轻易访问到,可以创建symbol,作为属性标识
let c = Symbol()
8.对象Object
1-7是原始值类型,原始值一旦创建就不可以修改
六、数据类型转换
将其他的数据类型,转换为String Number Boolean
1.转换为String
①调用被转换数据类型的toString()方法
该方法不会影响到原变量,它会将转换的结果返回,可以用赋值方式获取
var a = 123;
a = a.toString();
注意:null和undefined这两个值没有toString()方法
②调用String()函数,并将被转换的数据作为参数传递给函数
对于Number和Boolean实际上就是调用的toString()方法
但是对于null和undefined,就不会调用toString()方法
会将 null 直接转换为 "null"
会将 undefined 直接转换为 "undefined"
a = null;
a = String(a);
a = undefined;
a = String(a);
2.转换为Number
①使用Number()函数
字符串 --> 数字
如果是纯数字的字符串,则直接将其转换为数字
如果字符串中有非数字的内容,则转换为NaN 可以用parseInt 或者parseFloat提取出来
如果字符串是一个空串或者很多空格的字符串,则转换为0
布尔 --> 数字
true = 1
false = 0
null --> 数字 0 (空=0)
undefined --> 数字 NaN (没赋值初始化)
②parseInt() parseFloat()
专门针对字符串
注意,从左往右顺序读直到不是数字
var a = "123567a567px";
a = parseInt(a);
console.log(a);
上面显示是123567
var a = "123.456.789px";
a = parseFloat(a);
console.log(a);
上面显示是123.456
如果对非String使用parseInt()或parseFloat(),它会先将其转换为String然后再操作
var a = true;
a = parseInt(a);
console.log(a);
上面显示是NaN 解释:先转换为"true",再转为数字int,所以为NaN
3.转换为Boolean
使用Boolean()函数
数字 ---> 布尔
除了0和NaN,其余的都是true
字符串 ---> 布尔
除了空串,其余的都是true
null和undefined都会转换为false
对象也会转换为true
var a = " ";
a = Boolean(a); //是true
a="";
a = Boolean(a); //是false
a="false";
a = Boolean(a); //是true
七、其他进制的数字
0b:2进制 (但是不是所有的浏览器都支持)*
0开头:8进制
0x:16进制
a = 070; //a=56
像"070"这种字符串,有些浏览器会当成8进制解析,有些会当成10进制解析,要一致
var a = "070";
//可以在parseInt()中传递一个第二个参数,来指定数字转为的进制
//转为10进制,那么070肯定是8进制了
a = parseInt(a,10);
显示56