JavaScript_易错基础知识、arr对象、string对象、math对象、event事件

本文深入探讨JavaScript中易忽略的概念,如未声明变量的默认值、字符串中引号的使用、对象的定义与访问,以及数组和字符串的各种操作方法。同时,介绍了文件格式验证和随机数生成的实用技巧。

易忽略的地方

Value = undefined
未声明的变量,值为undefined。

     var carname;//carname 的值为 undefined:

重新声明 JavaScript 变量
如果重新声明 JavaScript 变量,该变量的值不会丢失:

var carname="Volvo"; 
var carname;//变量 carname 的值依然是 "Volvo":

可以在字符串中使用引号,只要不匹配包围字符串的引号即可:

var answer="It's alright";
var answer="He is called 'Johnny'";
var answer='He is called "Johnny"';

对象:
定义:
var person = {firstName:“John”, lastName:“Doe”, age:50, eyeColor:“blue”};
访问属性:
对象名.对象属性
对象名[“对象属性”]
对象方法的创建:

方法名:function(){代码段}

向未声明的 JavaScript 变量分配值
如果您把值赋给尚未声明的变量,该变量将被自动作为 window 的一个属性。

这条语句:

carname="Volvo";//将声明 window 的一个属性 carname。

非严格模式下给未声明变量赋值创建的全局变量,是全局对象的可配置属性,可以删除。

var var1 = 1; // 不可配置全局属性
var2 = 2; // 没有使用 var 声明,可配置全局属性

console.log(this.var1); // 1
console.log(window.var1); // 1

delete var1; // false 无法删除
console.log(var1); //1

delete var2; 
console.log(delete var2); // true
console.log(var2); // 已经删除 报错变量未定义

如果变量在函数内没有声明(没有使用 var 关键字),该变量为全局变量。

以下实例中 carName 在函数内,但是为全局变量。

实例
// 此处可调用 carName 变量
 
function myFunction() {
    carName = "Volvo";
    // 此处可调用 carName 变量
}

用于字符串的 + 运算符

  • 运算符用于把文本值或字符串变量加起来(连接起来)。

如需把两个或多个字符串变量连接起来,请使用 + 运算符。

txt1="What a very";
txt2="nice day";
txt3=txt1+txt2;
txt3 运算结果为:What a verynice day

对字符串和数字进行加法运算
两个数字相加,返回数字相加的和,如果数字与字符串相加,返回字符串。

x=5+5;
y="5"+5;
z="Hello"+5;
x,y, 和 z 输出结果为:

10
55
Hello5

arr对象

  1. concat方法:
    concat(内容) 将括号内的内容连接到数组的后方,返回连接后的数组
  2. pop()方法:
    取出数组最后一个元素并返回取出的元素
  3. push()方法:
    在数组末尾添加元素并返回添加后数组的长度
  4. reverse方法:
    将数组反转
  5. join()方法:
    join(“内容”) 通过括号中双引号里面的内容分隔数组的元素

在这里插入图片描述

String对象

  1. length属性:
    返回字符串的长度
  2. charAt方法:
    charAt(位置) 返回指定位置的字符
  3. charCodeAt方法:
    charCodeAt(位置) 返回指定位置字符的ascii码
  4. indexOf方法:
    indexOf(“字符”) 返回字符在字符串中第一次出现的位置
  5. lastIndexOf方法:
    lastIndexOf(“字符”) 返回字符在字符串中最后一次出现的位置
  6. split方法:
    split(“字符”) 将字符串以指定字符为界,分隔为数组。若给定空字符则将字符串每个元素分隔为一个数组元素
  7. substr方法:
    substr(n,m) 将字符串从位置n开始提取长度为m的字符串
  8. substring方法:
    substring(n,m)将字符串从位置n开始提取到位置m,位置m不包括在内
  9. toLowerCase方法:
    将字符串中的字母转变为小写字母
  10. toUpperCase方法:
    将字符串中的字母转变为大写字母

在这里插入图片描述

文件验证案例

要求:对用户上传的文件进行验证,符合格式允许上传,不符合格式不允许上传。
思路:获取文件的后缀,对后缀进行限制

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<script type="text/javascript">
		function JudgeSubmit(){
			var filename=document.getElementById("FileName").value;//获取浏览按钮的对象的值
			var HouZhui=filename.substr(filename.lastIndexOf(".")+1);//获取文件的后缀
			//由于文件后缀不分大小写,所以为了方便判断,需要先将后缀统一大小写然后进行判断
			var HouZhui=HouZhui.toLowerCase();
			if (HouZhui=="jpg"||HouZhui=="png") {
				alert("可以上传");
			}
			else{
				alert("文件格式错误");
			}
		}
	</script>
</head>
<body>
	<input type="file" id="FileName" value="浏览">
	<input type="button" id="sub" value="上传" onclick="JudgeSubmit()">
</body>
</html>

此种方法仅供巩固string对象,真正对文件上传限制应做到前后端均限制才会保证安全,前端的限制很容易就可以绕过从而导致文件上传漏洞

Math对象

Math.random()方法
取0到1的随机数,可以取到0取不到1

取n到m的随机数的方法

Math.random()*(m-n)+n  //此方法取不到m

取任意n到m的随机数且n和m均可取到

Math.floor(Math.random()*(m-n+1)+n

event事件:

保存事件发生时的信息。
获取标签可以有两种方法,第一种通过document.getElementById()获取,第二种通过event.target获取(多个按钮具有相同的事件时使用,不用给标签加id)
实例:点击按钮弹出按钮标签的value

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<script type="text/javascript">
		function fn1(){
			var obj=document.getElementById("d1");
			var zhi=obj.value;
			alert(zhi);
		}
		function fn2(e){
			alert(e.target.value);
		}
	</script>
</head>
<body>
	<input type="button" id="d1" value="点击1" onclick="fn1()">
	<input type="button" value="点击2" onclick="fn2(event)">
</body>
</html>
下载前必看:https://renmaiwang.cn/s/bvbfw Verilog设计_串并转换 / 移位寄存器实现了一种串并转换的功能,其核心原理在于移位寄存器的运用。 这里详细展示了串转并以及并转串两种不同的设计方案。 每一种转换模式都设有专属的使能信号,同时并行输出数据的格式提供了两种选择:最低有效位优先(lsb)和最高有效位优先(msb)。 串并转换技术主要应用于串行传输与并行传输这两种数据传输模式之间的相互转换,而移位寄存器是达成这一目标的常用工具,能够支持并行及串行的数据输入与输出操作。 这些移位寄存器通常被设定为“串行输入、并行输出”(SIPO)或“并行输入、串行输出”(PISO)两种工作模式。 在串行数据输出的过程中,构成数据和字符的码元会按照既定的时间顺序逐位进行传输。 相比之下,并行数据传输则是在同一时刻将固定数量(普遍为8位或16位等)的数据和字符码元同时发送至接收端。 数据输入通常采用串行格式进行。 一旦数据成功输入寄存器,它便可以在所有输出端同时被读取,或者选择逐位移出。 寄存器中的每个触发器均设计为边沿触发类型,并且所有触发器均以特定的时钟频率协同工作。 对于每一个输入位而言,它需要经过N个时钟周期才能最终在N个输出端呈现,从而完成并行输出。 值得注意的是,在串行加载数据期间,并行输出端的数据状态应保持稳定。 数据输入则采用并行格式。 在将数据写入寄存器的操作过程中,写/移位控制线必须暂时处于非工作状态;而一旦需要执行移位操作,控制线便会变为激活状态,并且寄存器会被锁定以保持当前状态。 只要时钟周期数不超过输入数据串的长度,数据输出端Q将按照预定的顺序逐位读出并行数据,并且必须明确区分最低有效位(LSB)和最高有效位(MSB)。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值