JavaScript变量
-
定义变量方式
<script> a = "123";//隐式定义变量 隐式定义的变量为全局变量 var a;//显式定义变量 var a,b,c;//可以一次定义多个变量 区分大小写 </script>
- 自动类型转换
<script> var a=123 //a为数字 var a="123" //a为字符 var a=123asd //报错 a什么都不是 //在js中+号可以是加法也可以是拼接字符串 数字之间用+为加法 有字符串参与的+为字符串 拼接 </script>
- 强制类型转换
- toString(): 将布尔值或数值转换为字符串
- parselnt(): 将字符串或布尔值转换成整数
- parseFloat():将字符串或布尔值转换成浮点数
<script> a = "1.23"; var b=a+2;//b=1.232因为是字符串拼接 var c=parseFloat(a)+2;//c=3.23 因为a呗转换成了浮点数 两个数相加 //强制转换成数字 将字符串中第一个非数字之前的数字转换成数字 如果是全部为字符或为布尔值,null,undefined等转换成NAN </script>
- 变量作用域 根据变量定义的范围,变量分为全局变量和局部变量:
全局变量:不在所有函数里定义的变量和在函数里不使用var(隐式定义)定义的变量,就是全局变量
局部变量:在函数里定义的、且使用var(显式定义)定义的变量,是局部变量
<script> var test = "全局变量";//包括在HTML事件中 function myFun() { age = 20;//全局变量 var male = "局部变量"; var test="在函数中定义与全局变量相同的局部变量,该变量在函数中使用时为局部变量的值,在外面则是全局变量的值"; }//在js中默认没有块范围在{}中定义的变量与外面相通 myFun(); alert(test + age); alert(male); </script>
- 变量提升机制
<sript> var a = 10 function test() { console.log(a) //在该语句中a的值为undefined if (0) { var a = 20//在函数中默认将定义变量语句最先执行,该句实际执行a=20,而var a 在函数开始就执行 } } test() </script>
-
let关键字
-
let定义的变量有块作用域
-
let定义的变量不会强加给window对象
-
let定义的变量不会提前转载(提升)
-
-
const常量
使用const定义常量:要求必须在定义时初始化值,并且之后不可以修改常量的值,
约定俗称的规范:常量一般都是大写命名,如果是多个单词,中间使用_连接
JavaScript基本数据类型
-
基本数据类型
-
数值类型:包含整数或浮点数。
-
布尔类型:只有true或false两个值。
-
字符串类型:字符串变量必须用引号括起来,引号可以是单引号,也可以是双引号。
-
undefined类型:专门用来确定一个已经创建但是没有初值的变量。
-
null 类型:用于表明某个变量的值为空。
-
- 数值类型
<script>
var a = 012;数值直接量不要以0开头 因为在js中支持十六(0x开头)和八进制(0开头)
console.log(a);
var a1 = new Number("12");//面向对象创建数据类型
console.log(a1);
var a2 = 0x12;
console.log(a2);
var b = 1E3;//字面量创建数值类型
console.log(b);
var c = .34E-3;//科学计数法使用51.2E2来表示,其中E不区分大小写
console.log(c);
var d = .34e3;//如果包含小数,则小数点前面的0可以省略
console.log(d);
</script>
数据类型里面的两个特殊值 :Infinity(正无穷大) -Infinity(负无穷大) 两个无穷大或无穷小总是相等 虽然真实值不相等 但是无穷后就想等了
NaN非数 与任何数值都不想等 可以通过isNaN()函数来判断变量是否为NaN
js中算术运算运行除数为0,除数和被除数同时为0结果为NaN,正数除0为Infinity,负数除0的结果为-Infinity
浮点数精度丢失,所以比较浮点数需要用差值法
var a = 0.3333;
var b = a * 5;
console.log(b);
console.log(b - 1.6665)
console.log(Math.abs(b - 1.6665));
//差值比较法
if (Math.abs(b - 1.6665) < 0.00000000001) {
console.log("b等于1.6665");
} else {
console.log("b不等于1.6665");
}
字符串类型
- 字符串必须用引号引起来"" '' 都可以
- java与js中字符串的区别:js''中可以写字符串,而java''只能写一个字符;比较两个字符串相等js用==就可以,java用equals()方法
- JavaScript提供字符串相关的方法和属性:
- String():类似于面向对象语言中的构造器,使用该方法可以构建一个字符串。
- charAt():获取字符串特定索引处的字符。
- charCodeAt():返回字符串中特定索引处的字符所对应的Unicode值。
- length:属性,直接返回字符串长度。JavaScript中的中文字符算一个字符。
- toUpperCase():将字符串的所有字母转换成大写字母。
- toLowerCase():将字符串的所有字母转换成小写字母。
- fromCharCode():静态方法,直接通过String类调用该方法,将一系列Unicode值转换成字符串。
- indexOf():返回字符串中特定字符串第一次出现的位置。
- lastlndexOf():返回字符串中特定字符串最后一次出现的位置。
- substring():返回字符串的某个子串。
- slice():返回字符串的某个子串,功能比 substring 更强大,支持负数参数。
- match():使用正则表达式搜索目标子字符串。
- search():使用正则表达式搜索目标子字符串。
- concat():用于将多个字符串拼加成一个字符串。
- split():将某个字符串分隔成多个字符串,可以指定分隔符。
- replace():将字符串中某个子串以特定字符串替代。
<script>
var text = "asdfghASDFGH";
var a = text.charAt(1); //获得第二个字符
var b = text.charCodeAt(1); //获得第二个字符对应的unicode值
var c = text.length; //获得整个字符串的长度
var d = text.toUpperCase(); //转化成大写
var e = text.toLowerCase(); //转化成小写
var f = String.fromCharCode(98, 100); //String构建字符串,获得unicode
值为98和100的字符
console.log(text);
console.log(a, b, c, d, e, f);
</script>
3.indexOf()和lastIndexOf()查找方法:
var text = "vclsdgarlsd";
var d = text.indexOf("l"); //返回l子串第一次出现的位置,如果没有就返回-1
var f = text.indexOf("l", 6); //跳过6个字符后,返回l子串第一次出现的位置,如果没有就返回-1
var g = text.lastIndexOf("l"); //返回l子串第一次出现的位置,如果没有就返回-1
console.log(d, f, g)
4.match()和search()查找方法
var text = "ag3ou7l3kjs4d3h1ls5jd";
var a = text.match(/\d/g); //寻找所有的数字,最终组成数组,其中g表示全局匹配
var b = text.search(/\d/); //寻找第一次数字的位置
console.log(b);
console.log(a);
5.substring()和slice()截取方法:
var text = "ag3ou7lsdfds";
var a = text.substring(3, 6); //从原字符串中截取索引处3、4、5三个字符 即ou7
var b = text.slice(3, -1); //从原字符串中截取索引是3的字符开始到倒数第一个字符之间的字符 即ou7lsdfd
console.log(a);
console.log(b);
<script>
var text = "adsgsdhtdsfge";
var text2 = "hxl";
var text4 = "hxl111";
var text3 = text.concat(text2, text4); //连接多个字符串,concat(...)
console.log(text3);
//split
var text = "sdg7rhehd7htds";
var arr = text.split("7"); //以7来把字符串分隔成组数
console.log(arr);
//replace
var text = "sad7sdv7efds";
var arr = text.replace(/7/g, "qcby"); //把所有的7换成qcby
console.log(arr);
</script>