1.JavaScript的使用
(1)内部js
在HTML中在script标签中就可以编写JavaScript代码,以下是一个简单演示。
<script>
alert("Hello,World!");
</script>
(2)引用外部js文件
使用<script type=“text/javascript”src=“js文件路径”>引入外部.js文件
<script type="text/javascript" src="js学习.js"></script>
js文件代码
alert("hello world 1");
(3)行内式
在标签属性内使用 "";
<body onl oad="alert('hello world3')";>
</body>
2.js的基础语法
1.语句:
* js代码一行为单位,代码从上往下执行,一行一条语句
* 语句不加分号结尾,如果一行定义多条语句,每条语句只会必须以分号结尾
* 表达式不需要以分号结尾
2.注释:
// 单行注释,注释内容不可以换行 ctrl+/
/* 多行注释 alt+shift+a (Visual Studio Code)
注释内容
可以换行
*/
/**
* 文档注释
* 说明类、方法的参数及使用方式。。。
* 功能介绍
*/
3.标识符和关键字
1.标识符
标识符(Identifier)就是名称的专业术语。JavaScript 标识符包括变量名、函数名、参数名和属性名。
合法的标识符应该注意以下强制规则:
第一个字符必须是字母、下划线(_)或美元符号($)。
除了第一个字符外,其他位置可以使用 Unicode 字符。一般建议仅使用 ASCII 编码的字母,不建议使用双字节的字符。
不能与 JavaScript 关键字、保留字重名。
可以使用 Unicode 转义序列。例如,字符 a 可以使用“\u0061”表示。
示例
在下面示例中,定义变量 a,使用 Unicode 转义序列表示变量名。
var \u0061 = "字符 a 的 Unicode 转义序列是 \\0061";
document.write(\u0061);
2.关键字
关键字就是 ECMA-262 规定的 JavaScript 语言内部使用的一组名称(或称为命令)
。 这些名称具有特定的用途,用户不能自定义同名的标识符。具体说明如表所示。
4.变量声明
变量声明,无论发生在何处,都在执行任何代码之前进行处理。
用 var 声明的变量的作用域是它当前的执行上下文,它可以是嵌套的函数,或者对于声明在任何函数外的变量来说是全局。
var a ; //声明在任何函数外的变量
function inner(){
a='改变了a的值'
}
inner()
console.log(a) //改变了a的值
当赋值给未声明的变量, 则执行赋值后, 该变量会被隐式地创建为全局变量(它将成为全局对象的属性)。
声明和未声明变量之间的差异是:
- 声明变量的作用域限制在其声明位置的上下文中,而非声明变量总是全局的。
function inner(){
a ="内部a";
var b = "内部b" ; //将会报错
}
inner()
console.log(a) //内部a
console.log(b) //Uncaught ReferenceError: b is not defined
变量提升
由于变量声明(以及其他声明)总是在任意代码执行之前处理的,所以在代码中的任意位置声明变量总是等效于在代码开头声明。这意味着变量可以在声明之前使用,这个行为叫做“hoisting”。“hoisting”就像是把所有的变量声明移动到函数或者全局代码的开头位置。
bla = 2
var bla;
// 可以隐式地(implicitly)将以上代码理解为:
var bla;
bla = 2;
5.数据类型
1、Number数值类型
Number类型包含整数和浮点数(浮点数数值必须包含一个小数点,且小数点后面至少有一个数字)两种值
注意:在js中浮点数的精度是17位,计算是二进制的计算数 据,所以得到的不是整数
var num1 = 0.1;
var num2 = 0.2;
console.log(num1 + num2); //0.30000000000000004
NaN:非数字类型,属于数值型基本数据类型
特点:
1):设计任何的NaN操纵都会返回NaN
console.log('ab'/10); // NaN
2) NaN不等于自身。
console.log(NaN == NaN);// false;
判断是否是Number类型
1、isNaN:判断是否是一个非数字类型,传入的非数字类型,返回true,否则返回false
注意:传入的参数首先会被转化为数值,如果参数类型为对象类型,先调用valueOf()方法,再确定该方法返回的值是否可以转换为数值类型,如果不能,再调用toString()方法,再确定返回值
2、typeof
Number():可以用于任何的数据类型
parseInt:提取 整数数值
paseFloat:提取浮点数值
2、String 字符串类型
特点:
1、字符串的单引号和双引号作用效果一样
2、字符串有length属性,可以取得字符串的长度
3、字符串的值是不可变的,所以很多的字符串的api不会改变原字符串值
字符串转换:
String():适用于任何的数据类型(null -> null undefined -> undefined)
toString():null和undefined没有这个功能
console.log(null.toString()); //error 报错
3、Boolean 布尔类型
该类型只有两个值:true、false
转换为`boolean`: `Boolean()`
Boolean(undefined):false
Boolean(null):false
Boolean(非空对象包括空数组[]和空对象{}):true
Boolean(非0): true || Boolean(0和NaN):false
Boolean(非空包括空格字符串):true || Boolean(''):false
出现场景:
(1)条件语句导致执行的隐士类转换
(2)字面量或变量定义
类型转换:
Number(true): 1 || Number(false) : 0
String(true):'true' || String(false):'false'
4、Null 空对象指针类型
如果定了一个对象,初始化可以为null,因为null的基本类型是Null,在if语句中默认转化为false,在和数值计算默认为0
出现场景:对象不存在
类型转换:
Booleam(null) false
Number(num) 0
String(null) 'null'
Number(null) // 0
5、Undefined
申明了变量但是没有初始化,默认为undefined,在if语句中默认转化为false,
undefined:表示‘缺少值’,就是应该有一个值,但是没有定义,以下用法是典型的出现undefined情况
(1)变量被申明,等于undefined
(2)调用函数时,应该提供的参数没有提供,该参数等于undefined
(3)对象没有赋值的属性,该属性值为undefined
(4)函数没有返回值,默认返回undefined
类型转换:
Boolean(undefined): false
Number(undefined): NaN
String(undefined): 'undefined'
6.js类型转换
JS 种的类型转换,只有如下三种情况:
- 转为布尔值
- 转为数字
- 转为字符串
以下是各种数据类型之间相互转换的表格:
原始值类型 | 目标值类型 | 结果 |
---|---|---|
boolean | 布尔值 | 本身值,false 就为 false ,true 就为 true |
number | 布尔值 | 0 和 NaN 为 false 否则都为 true |
string | 布尔值 | 除了空字符串为 false 其他都为 true |
undefined、null | 布尔值 | false |
symbol | 布尔值 | true |
对象 | 布尔值 | true |
数组 | 布尔值 | true |
原始值类型 | 目标值类型 | 结果 |
---|---|---|
boolean | 字符串 | true: 'true';false: 'false' |
number | 字符串 | 数字字符串 |
string | 字符串 | 字符串本身值 |
undefined、null | 字符串 | 抛错 |
symbol | 字符串 | symbol 字符串 |
对象 | 字符串 | '[object Object]' |
数组 | 字符串 | 空数组转为空字符串,否则转为由逗号拼接每一项的字符串 |
原始值类型 | 目标值类型 | 结果 |
---|---|---|
boolean | 数字 | true 转换为 1,false 转换为 0 |
number | 数字 | 数字本身 |
string | 数字 | 除了都是数字组成的字符串,能转换成数字外,其他都是 NaN |
null | 数字 | 0 |
undefined | 数字 | NaN |
symbol | 数字 | 抛错 |
对象 | 数字 | NaN |
数组 | 数字 | 空数组转换为0;只有一项(数字)的数组转换为这个数字;只有一项(空字符串、undefined、null)的数组转换为0;除上述以外情况的数组转换为 NaN
|