(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>
1.语句:
* js代码一行为单位,代码从上往下执行,一行一条语句
* 语句不加分号结尾,如果一行定义多条语句,每条语句只会必须以分号结尾
* 表达式不需要以分号结尾
2.注释:
// 单行注释,注释内容不可以换行 ctrl+/ /* 多行注释 alt+shift+a (Visual Studio Code) 注释内容 可以换行 */ /** * 文档注释 * 说明类、方法的参数及使用方式。。。 * 功能介绍 */
合法的标识符应该注意以下强制规则:
第一个字符必须是字母、下划线(_)或美元符号($)。
除了第一个字符外,其他位置可以使用 Unicode 字符。一般建议仅使用 ASCII 编码的字母,不建议使用双字节的字符。
不能与 JavaScript 关键字、保留字重名。
可以使用 Unicode 转义序列。例如,字符 a 可以使用“\u0061”表示。
示例
在下面示例中,定义变量 a,使用 Unicode 转义序列表示变量名。
var \u0061 = "字符 a 的 Unicode 转义序列是 \\0061"; document.write(\u0061);
关键字就是 ECMA-262 规定的 JavaScript 语言内部使用的一组名称(或称为命令)
变量声明,无论发生在何处,都在执行任何代码之前进行处理。
用 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;
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'
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 |