javaweb ---- JavaScript:ECMAScript
JavaScript的理解概述:
- javaScript属于客户端脚本语言,不需要编译,直接被浏览器解析引擎运行,用来增加一些动态视觉效果,以及对用户的操作做出反应。
- JavaScript = ECMAScript (所有客户端脚本语言的语法规范)实现+ JavaScript自己特有的东西(BOM+DOM) ,其中ECMAScript脚本语法规范包括“与html结合方式”,“基本数据类型”,“基本运算类型”,“流程控制语句”,“基本对象”。
JavaScript的使用概述:
- ECMAScript标准下的基本对象和java中对象的用法一致:先创建后使用。
Array数组对象的构造方法:
-var arr = new Array(元素列表);
-var arr = new Array(默认长度);
-var arr = [元素列表];
Array数组对象的一般方法:
-join(参数):将数组中的元素按照指定的分隔符拼接为字符串
-push() :向数组的末尾添加一个或更多元素,并返回新的长度。
Array数组对象的可访问属性:
-length:数组的长度
日期对象的构造方法:
-var date = new Date();
日期对象的一般方法:
-toLocaleString():返回当前date对象对应的时间本地字符串格式
-getTime():获取毫秒值。返回当前如期对象描述的时间到1970年1月1日零点的毫秒值差
创建正则对象:定义字符串的组成规则,用于用户输入内容格式的验证。
创建正则对象的构造方法:
-var reg = new RegExp("正则表达式");
-var reg = /正则表达式/;
创建正则对象的一般方法:
-test(参数):验证指定的字符串是否符合正则定义的规范
Global为全局对象,不需要创建对象直接用方法:
Global对象的包含方法:
-encodeURI():url编码
-decodeURI():url解码
-encodeURIComponent():url编码,编码的字符更多
-decodeURIComponent():url解码
-parseInt():将字符串转为数字
-isNaN():判断一个值是否是NaN
-eval():讲 JavaScript 字符串,并把它作为脚本代码来执行。
html&JavaScript的测试代码:
<head>
<meta charset="UTF-8">
<title >Title</title>
<!-- 内部JS:定义<script>,标签体内容就是js代码,<script>可以定义多个,可以定义在html页面的任何地方。但是定义的位置会影响执行顺序 -->
<script>
alert("Hello World");
</script>
<!--定义<script>,通过src属性引入外部的js文件-->
<script src="js/a.js"></script>
</head>
JavaScript数据类型的测试代码:
<!--运行前提:
html&javaScript
-->
<script>
alert("Hello World");
//JavaScript是弱类型语言,变量存储空间可以存放任意类型的数据。
//1.number类型
var num = 1;
var num2 = 1.2;
var num3 = NaN;//not a number 一个不是数字的数字类型
//
//通过typeof运算符可以知道变量的类型
document.write(num+"---"+typeof(num)+"<br>"); //1---number
document.write(num2+"---"+typeof(num2)+"<br>");//1.2---number
document.write(num3+"---"+typeof(num3)+"<br>");//NaN---number
//2.string类型
var str = "abc";
var str2 = 'a';
document.write(str+"---"+typeof(str)+"<br>");//abc---string
document.write(str2+"---"+typeof(str2)+"<br>"); //a---string
//3.boolean类型
var flag = true;
document.write(flag+"---"+typeof(flag)+"<br>"); //true---boolean
//4.null,undefined类型
var obj = null;//一个对象为空的占位符
var obj2 = undefined;//未定义
var obj3 ;//如果一个变量没有给初始化值,则会被默认赋值为undefined
document.write(obj+"---"+typeof(obj)+"<br>"); //null---object
document.write(obj2+"---"+typeof(obj2)+"<br>"); //undefined---undefined
document.write(obj3+"---"+typeof(obj3)+"<br>"); //undefined---undefined
</script>
JavaScript算术运算测试代码:
<script>
//1.算术运算:+ - * / % ++(--)* *++(--)
//1.1number类型算术运算
var num = 1;
var num2 = 2;
document.write(num+num2 +"<br>");//3
document.write(num-num2 +"<br>");//-1
document.write(num*num2 +"<br>");//2
document.write(num/num2 +"<br>");//0.5
document.write(num%num2 +"<br>");//1
var num3 = 3;
var a = ++ num3 ;//先自增(自减),再赋值运算
document.write(num3);// 4
document.write(a); // 4
/* var a = num++ ; 先赋值运算,再自增(自减)
document.write(num3); 4
document.write(a); 3
*/
//1.2如果运算数不是运算符所要求的类型,那么js引擎会自动的将运算数进行类型转换
//1.2.1字符串转数字为NaN
var b = +"123abc";//加号减号的数字都视为参与运算
document.write(typeof (b)); //number
//
//Nan参与运算的结果也是NaN
document.write(b + 1); //NaN
document.write("<hr>"); //水平线
//1.2.2Boolean类型转为数字0或者1
var flag = + true;
var f2 = + false;//boolean转number:true转为1,false转为0
document.write(typeof (flag) + "<br>");//number
document.write(flag + "<br>");// 1
document.write(f2 + "<br>");// 0
//2.比较运算:> < >= <= == ===(全等于)
//2.1类型相同:直接比较
document.write((3 > 4) +"<br>"); //false
//
//字符串按照字典顺序比较。按位逐一比较,直到得出大小为止
document.write(("abc" < "acd") +"<br>"); //true
//2.2类型不同:先进行类型转换,再比较
document.write(("123" == 123) +"<br>"); //true
//
//全等于。在比较之前,先判断类型,如果类型不一样,则直接返回false
document.write(("123" === 123) +"<br>");//false
//3.逻辑运算:&& || !
//3.1
var flag = true;
document.write(flag+"<br>"); //true
document.write(!flag+"<br>");//false
document.write("<hr>");
//3.2:其他类型转boolean
//number:0或NaN为假,其他为真
var num = 3;
var num2 = 0;
var num3 = NaN;
document.write(!!num+"<br>");//双重否定表否定 true
document.write(!!num2+"<br>");//false
document.write(!!num3+"<br>");//false
document.write("<hr>");
//string:除了空字符串(""),其他都是true
var str1 = "abc";
var str2 = "";
document.write(!!str1+"<br>");//true
document.write(!!str2+"<br>");//false
document.write("<hr>");
//null & undefined:都是false
var obj = null;
var obj2;
document.write(!!obj+"<br>");//false
document.write(!!obj2+"<br>");//false
document.write("<hr>");
//对象:所有对象都为true
var date = new Date();
document.write(!!date+"<br>");//true
document.write("<hr>");
//4.三元运算
var a = 3;
var b = 4;
var c = a > b ? 1:0;
alert(c);//0
</script>
JavaScript流程控制测试代码:
<script>
//1.for循环实现1 ~ 100 求和
var sum = 0;
for (var i = 1; i <= 100; i ++){
sum += i;
}
alert(sum);
/*while循环实现:
var sum = 0;
var num = 1;
while(num <= 100){
sum += num;
num ++;
}
alert(sum);
*/
//2.在JS中,switch语句可以接受任意的原始数据类型.在java中,switch语句可以接受的数据类型: byte int shor char,枚举(1.5) ,String(1.7)
var a;
switch (a){
case 1:
alert("number");
break;
case "abc":
alert("string");
break;
case true:
alert("true");
break;
case null:
alert("null");
break;
case undefined:
alert("undefined");
break;
}
//do-while,if-else与C,java语法结构相同。
</script>
function对象的测试代码:
<script >
//1.
//定义方法形参的类型不用写,返回值类型也不写。
function add(a , b){ //定义方法形式一
alert(a + b);
}
//
//在JS中,方法的调用只与方法的名称有关,和参数列表无关
add(3,4); //7
add(); //NaN
add(1); //NaN
add(1,2,3); //3
//2.
// 方法是一个对象,如果定义名称相同的方法,会覆盖
var add = function(a,b){ //定义方法形式二
alert(a-b);
}
add(4,3); //1
//3.
//在方法声明中有一个隐藏的内置对象(数组),arguments,封装所有的实际参数;length可以表示实际参数的个数
function add (){//求任意个数的和
var sum = 0;
for (var i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum;
}
var sum = add(1,2,3,4); //10
alert(sum);
</script>
Array对象的测试代码:
<script >
//1.创建方式数组
var arr1 = new Array(1,2,3);
document.write(arr1 +"<br>");//1,2,3
//var arr2 = new Array(3); // , ,
//var arr3 = [1,2,3]; //1,2,3
var arr4 = new Array(); //空数组
//2.
//JS中,数组元素的类型可变的。
var arr = [1,"abc",true];
document.write(arr +"<br>");//1,abc,true
document.write(arr[0] +"<br>");//1
document.write(arr[1] +"<br>");//abc
document.write(arr[2] +"<br>");//true
//
//JS中,数组长度可变的
arr[10] = "hehe";
document.write(arr[10] +"<br>");//hehe
document.write(arr[9] +"<br>");//undefined
alert(arr.length);//11
//3.
document.write(arr.join("--")+"<br>"); //1--abc--true----------------hehe
arr.push(11);
document.write(arr.join("--")+"<br>"); //1--abc--true----------------hehe--11
</script>
Data对象的测试代码:
<script >
//1.创建Date对象
var date = new Date();
document.write(date + "<br>"); //Thu Sep 02 2021 18:43:51 GMT+800
//2.测试Date对象的一般方法
document.write(date.toLocaleString() + "<br>"); //2021/9/2 下午6:43:51
document.write(date.getTime() + "<br>"); //1630579431321
</script>
正则表达式对象的测试代码:
/*RegExp:正则表达式对象:定义字符串的组成规则。
1. 单个字符类型:[]
如: [a]:单个字符类型只能为a [ab]:单个字符类型只能为a或者b [a-zA-Z0-9_]:单个字符类型为数字或者字母
* 特殊符号代表特殊含义的单个字符:
\d:单个字符类类型为数字类型 [0-9]
\w:单个字符类型为数字或者字母[a-zA-Z0-9_]
2. 量词符号:
?:表示出现0次或1次
*:表示出现0次或多次
+:出现1次或多次
{m,n}:表示 m<= 数量 <= n
* m如果缺省: {,n}:最多n次
* n如果缺省:{m,} 最少m次
3. 开始结束符号
^:开始
$:结束
4.特数字符
@:表示@
.\:表示.
*/
<script>
//1.创建正则对象
//new RegExp()中\w的需要用\防止\w变为转义w的含义
var reg = new RegExp("^\\w{6,12}$"); //输入的字符串必须为6~12位的数字或者字母
//var reg= /^\w{6,12}$/;
//2.测试test(参数)方法:
var username = "zhangsan";
var flag = reg.test(username);
alert(flag);//true
</script>
Global对象的测试代码:
<script >
//Global为全局对象,内部封装的方法不需要对象就可以直接调用
//1.测试编码解码:
var str = "http://www.baidu.com?wd=百度一下";
var encode = encodeURI(str);
document.write(encode +"<br>");//http://www.baidu.com?wd=%E7%99%BE%E5%BA%A6%E4%B8%80%E4%B8%8B
var s = decodeURI(encode);
document.write(s +"<br>");//http://www.baidu.com?wd=百度一下
var str1 = "http://www.baidu.com?wd=百度一下";
var encode1 = encodeURIComponent(str1);
document.write(encode1 +"<br>");//http%3A%2F%2Fwww.baidu.com%3Fwd%3D%E7%99%BE%E5%BA%A6%E4%B8%80%E4%B8%8B
var s1 = decodeURIComponent(encode);
document.write(s1 +"<br>");//http://www.baidu.com?wd=百度一下
//2.测试字符串转换为整数:
//逐一判断每一个字符是否是数字,直到不是数字为止,将前边数字部分转为number
var str = "2a234abc";
var number = parseInt(str);
alert(number + 1); //3
//3.测试NaN判断:
//NaN参与的==比较全部问false
var a = NaN;
document.write(a == NaN);false
document.write(isNaN(a));true
//4.测试将字符串当作js代码执行:
var jscode = "alert(123)";
eval(jscode);
</script>
1420

被折叠的 条评论
为什么被折叠?



