1.JavaScript的简介
JavaScript是一种具有面向对象能力的、解释性的程序设计语言。更具体一点,它是基于对象和事件驱动并具有相对安全性的客户端脚本语言。它的主要目的是,验证发往服务器端的数据、增加web互动、加强用户体验度等。
javascript的组成:
2.JS的三种使用方式
1.行内JS
在HTML标签上直接写JS代码
2.内部JS
在script标签中写JS代码,script标签可以放在head中或body中(建议放在body标签最后)
3.外部JS
定义JS文件,通过script标签的src属性引入对应的JS文件
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>基本使用</title>
</head>
<body>
/*行内JS*/
<button onclick="alert('hello world');">按钮</button>
/*内部JS*/
<script type="text/javascript">
//console.log("这是一个按钮");
</script>
/*外部JS*/
<script src="./text.js"type="text/javascript"charset="UTF-8"></script>
</body>
</html>
注:如果script标签设置了src属性。则在script双标签之间的代码不会生效
3.基础语法
1.语句、注释、标识符、关键字
语句:
1.JS代码一行为单位,代码从上往下执行,一行一条语句。
2.语句不加分号结尾,如果一行定义多条语句,每句语句之后必须以分号结尾。(建议都加分号)
3.表达式不需要以分号结尾,如果加了分号则JavaScript引擎会当做语句执行,生成无用的语句。
注释:
1.HTML代码注释:< !--代码注释-->
2.JS代码注释:
// 单行注释
/* 多行注释 */
标识符:
规则:由Unicode字母、_、$、数字组成、中文组成
(1)不能以数字开头
(2)不能是关键字和保留字
(3)严格区分大小写
规范:(1)见名知意(2)驼峰命名或下划线规则
关键字(保留字)
声明变量时,不要使用关键字
2.变量
变量即一个带名字的用来存储数据的内存空间,数据可以存储到变量中,也可以从变量中取出数据。
变量的声明
JavaScript是一种弱类型语言,在声明变量时不需要指明数据类型,直接用 var 修饰符进行声明。
//先声明再赋值
var a;
a=10;
//声明同时赋值
var a=20;
变量的注意点
(1)若只声明而没有赋值,则该变量的值为 undefined。
(2)变量要有定义才能使用,若变量未声明就使用,JavaScript会报错,告诉你变量未定义。
(3)可以在同一条var命令中声明多个变量。
(4)若使用var重新声明一个已经存在的变量,是无效的。
(5)若使用var重新声明一个已经存在的变量且赋值,则会覆盖掉前面的值。
(6)JavaScript是一种动态类型、弱类型语言,也就是说,变量的类型没有限制,可以赋予各种类型的值。
变量名提升
JavaScript引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行的运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>变量</title>
</head>
<body>
<script type="text/javascript">
//变量名提升
console.log(flag);
console.log(name);//undefined
//1.先声明再赋值
var a;
a=1;
console.log(a);//1
//2.声明并赋值
var b=2;
console.log(b);//2
//3.若只声明而没有赋值,则该变量的值为 undefined
var c;
console.log(c);//undefined
//4.若变量未声明就使用,JavaScript会报错
//console.log(d);//d is not defined
//5.同一条var命令中声明多个变量
var aa,bb,cc=10;
console.log(aa);//undefined
console.log(bb);//undefined
console.log(cc);//10
//6.使用var重新声明一个已经存在的变量,是无效的
var a;
console.log(a);//1
//7.使用var重新声明一个已经存在的变量且赋值,则会覆盖掉前面的值
var a=20;
console.log(a);//20
//8.可以赋予各种类型的值
var str="hello world";
var flag=true;
console.log(str);
console.log(flag);//true
</script>
</body>
</html>
注:变量提升只对var命令声明的变量有效,如果变量不是用var命令声明的,就不会发生变量提升。
3.数据类型
JS是弱语言类型,变量没有类型,但数据本身是有类型的。
undefined
出现undefined的情况:
(1)变量只声明未赋值,值为undefined
(2)当定义函数需要形参,调用函数未传递实参时,参数的值为undefined
(3)当函数没有返回值,接收值为undefined
Null
使用null类型值时注意以下几点:
(1)使用 typeof 操作符测试 null 返回 object 字符串。
(2)undefined 派生自null,所以等值比较返回值是 true。未初始化的变量和赋值为 null 的变量相等。
布尔类型
布尔类型有两个值:true 和 false。常用来做判断和循环的条件。
数值类型
数值型包含两种数值:整型和浮点型。
(1)所有数字都是以64位浮点数形式存储。所以,JS中 1 与 1.0 相等,而且 1 加上 1.0 得到的还是一个整数。浮点数最高精度是 17 位小数,由于浮点数运算时可能不精确,尽量不要使用浮点数做判断。
(2)在存储数值型数据时自动将可以转换成整型的浮点数值转为整型。
字符串
使用单引号或双引号引起来。
使用加号进行字符串的拼接。
对象
数组 var 数组名 = [ ] ;
对象 var 对象名= { } ;
函数 function 方法名(){
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>数据类型</title>
</head>
<body>
<script type="text/javascript">
/*undefined类型*/
//1.变量只声明未赋值,值为undefined
var a;
console.log(a);
//2.当定义函数需要形参,调用函数未传递实参时,参数的值为undefined
//定义函数 function 方法名([参数]){}
function fn01(str) {
console.log(str);
}
//调用方法 方法名([参数]);
fn01();
//3.当函数没有返回值,接收值为undefined
function fn02() {
console.log("fn02....");
}
var b = fn02();
console.log(b);
/*null类型*/
var num = 1;//数值类型
var flag=true;//布尔类型
var str="hello";//字符串类型
console.log(typeof num);//number
console.log(typeof flag);//boolean
console.log(typeof str);//string
//1.使用 typeof 操作符测试 null 返回 object 字符串
var aa=null;
console.log(typeof aa);//object
//2.undefined 派生自null,所以等值比较返回值是 true。未初始化的变量和赋值为 null 的变量相等。
console.log(undefined==null);//true
//只声明未赋值变量和值为null的变量相等
var bb;
var cc=null;
console.log(bb==cc);//true
/*数值类型*/
//1和1.0相等
console.log(1==1.0);//true
//1+1.0 等于 2
var n = 1+1.0;
console.log(n);
//将浮点型的整数转换成整型 1.0-> 1
console.log(1.0);
/*字符串类型*/
//1.使用单引号或双引号引起来
var s1="hello";
var s2="world";
console.log(s1,s2);//hello world
//2.使用加号进行字符串的拼接
console.log(s1+s2);//helloworld
</script>
</body>
</html>
4.类型转换
(1)自动类型转换
1.转字符串:所有的值转字符串都是加引号
2.转布尔型:有值为 true,无值为 false(0为 false,非0为 true)
3.转数值型:空值是 0 ,非空的数值型字符串能转换,非数值字符串转换为NaN
(2)函数转换 (String to Number)
parseInt() 转整数型
parseFloat() 转浮点型
注:转换时会从值的第零个位置开始找有效数字,直到找到无效数字为止,parseFloat在转换时会比parseInt多一个小数点。
(3)显示转换(强制转换)
toString() 将值转换成字符串
toFixed() 保留指定小数位,可以四舍五入
注:值不能为null
JS为Number、Boolean、String 对象提供了构造方法,用于强制转换数据类型,转换的是值的全部。
注:可以转成null值
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>类型转换</title>
</head>
<body>
<script type="text/javascript">
//parseInt
console.log(parseInt("123abc")); //123
console.log(parseInt("abc123")); //NaN
console.log(parseInt("123.4abc")); //123
console.log("123"); //123
console.log(parseInt("123")); //123
var a = 1;
var b = "2";
console.log(a + b); //12
console.log(a + parseInt(b)); //3
//parseFloat
console.log(parseFloat("123abc")); //123
console.log(parseFloat("abc123")); //NaN
console.log(parseFloat("123.4abc")); //123.4
console.log(parseFloat("123.4.5")); //123.4
console.log(parseFloat("12")); //12
//tostring()
var uu = 20;
console.log(uu); //20
console.log(uu.toString()); //20
var zz = null; //空值
//console.log(zz.toString());// Cannot read properties of null
//toFixed()
var vv = 3.1415;
console.log(vv.toFixed(2)); //保留两位,四舍五入
//Number
var z = "12";
var x = "g";
var c = "123abc";
var v = "123.4";
var n = "12.3.6";
console.log(Number(z)); //12
console.log(Number(x)); //NaN
console.log(Number(c)); //NaN
console.log(Number(v)); //123.4
console.log(Number(n)); //NaN
</script>
</body>
</html>