JavaScript基础

JavaScript是一种脚本语言,主要包括:ECMAScript–提供核心语言功能,DOM–文档对象模型–提供访问操作网页内容的方法和接口,BOM–浏览器对象模型–提供与浏览器交互的方法和接口。
1.JavaScript基本数据类型
先来了解一下检测数据类型的操作符:typeof
eg:var msg = "hello world";alert(typeof msg);typeof是操作符,后面可以直接加待检测的内容,括号可以加,但是不是必需的
基本数据类型:
①Undefined:只有一个值undefined,当使用var申明一个变量还未初始化时,这个变量的值就是undefined;
②Null:只有null一个值,null值表示的是空对象指针,当我们定义一个变量要用来保存对象时,给该变量初始化为null,要注意,null和undefined是不同的【我们在任何时刻都不必要将任何变量显性的设置为undefined,但是null是有必要的,用来保存对象的变量,在还没有保存对象之前设置为null,体现了null作为空指针的用途,也区别了null和undefined】
③Boolean类型:true&false,其他类型数据转化成Boolean类型,方法–Boolean(被转化的变量)
④Number类型:数据范围是:Number.MIN_VALUE~Number.MAX_VALUE,当一个树超过数据范围是,会自动转换成特殊的值(Infinity/-Infinity),无法继续参与后面的计算,如果想要判断一个数是否在数据范围可以用isFinite()方法。
NaN:Not a Number,用来表示一个本来要返回数值,但是没有返回数值的情况,用==判断时,NaN与任何值都不相等(包括本身),isNaN()方法用来判断一个值是否能被转化成数值,不能返回true。
数值转换:常用的方法:Number(),parseInt(),parseFloat()
(a)Number():Boolean转换成1或0,数字值转化结果为本身,null->0,undefined–>NaN,字符串:空字符–>0,包含十六进制格式–>可以将十六进制转换成十进制,字符串为整数或者小数格式–>转化成整数或小数,其他形式的字符串(包含字母(不是十六进制的格式))–>NaN;
(b)parseInt():与Number()不同之处在于:字符串parseInt()会从头开始解析,直到遇到第一个非数字字符,空字符–>NaN ,可以识别各种整数格式(八、十、十六进制),但在八进制转化时会产生歧义(eg:“070”应该按照十进制转化成70,还是按照八进制转化成56),于是parseInt()方法中可以指定第二个参数,用来指定要解析的字符串是几进制的格式,eg:parseInt(“070”,10)–>70,parseInt(“070”,8)–>56;
(c)parseFloat():与parseInt()相似,不同处一:解析字符串时第一个小数点是有效的,第二个小数点无效,不同处二:会始终忽略前面的0,因此只能解析十进制格式的数,也只能有一个参数。
⑤String类型:
其他类型数据转化成String类型,有两种方法:toString()和String()
toString():null和undefined类型数据没有这个方法,该方法没有参数,但数值在调用toString()方法时,可以传入一个参数指定返回的格式(几进制);
String():当我们不确定要转化数据的类型时,最好用String方法,null返回null,undefined返回undefined
以上五种就是五种基本数据类型,此外还有一种复杂数据类型:Object(之后详细介绍)
2.JavaScript中的=====区别:
==:相等:先转化再比较:undefined==null,NaN!=任何数据(包括NaN)
===:不转化直接比较:undefined!==null
3.理解JavaScript中的函数:
function+一组参数+函数体
定义函数时,不必要指定是否返回值,任何函数在任何时候都可以通过return来返回值。
ECMAScript中函数参数与其他语言中函数参数不同,ECMAScript是不关心传入参数的类型和数目的,因为在ECMAScript函数内部,参数是以数组的心形式保存的,所以无论传入多少数据或什么类型,在ECMAScript内部都是一个数组。故此,也无法实现像传统意义上的重载,但我们可以通过判断函数内数组的数据类型和数目,来实现方法的“重载”。
4.引用类型
何为引用类型?我们可以用其他语言中的类来理解JavaScript中的引用类型,或者可以称为对象定义。
Object类型:创建方式两种:①new操作符来创建,②对象字面量来创建var 名称 = {属性名:属性值},而对象中属性的调用可以用点表示法或者方括号表示法。
Array类型:创建方法:var array = new Array();或者var array = new Array(数组大小);或者var array = new Array(“red”)(创建包含一项且为“red”的字符串);或者var array = [“red”,“yellow”]
Array数组的length不只是只读的,可以通过设置数组的length,来从数组末尾删除、添加(新添加的每一项都为undefined)
如何检测数组:instanceof或者Array.isArray()两种方法来检测
Array数组的方法:
①toString(),valueOf(),toLocaleString()–生成以逗号分隔的字符串;
②join(指定分隔符号),生成以指定符号分隔的字符串
③栈方法:push()(数组末尾添加新项),pop()(数组末尾移除并返回一项)–后入先出
④队列:push(),shift()(移除返回第一项)–先入先出,还有与shift()相反的方法unshift()在数组前端添加任意个项,并返回新数组的长度
⑤重排序:reverse()–反转数组;sort()–升序排列数组,每项toString()比较得到的字符串
⑥操作方法–不影响原数组
concat(新添加的项)–创建数组的副本,并添加新的项在数组末尾
slice(起始位置,终止位置)–原数组从起始位置到终止位置之间所有项构成的数组
splice(数组中项的位置,要删除的项的数目,新添加的项(可以是多个))–基于该方法可以实现数组中项的删除,添加,替换方法
⑦位置方法:indexOf(),lastIndexOf()
⑧迭代方法:every(给定运行的函数)–每一项运行结果为true,则返回true
some(函数)–有一项运行结果为true,则返回true
filter(函数)–返回运行结果是true的项组成的数组
map(函数)–返回每项运行结果组成的数组
forEach(函数)–每项运行函数,没有返回值,类似于for()
5.基本包装类型:-----方便操作基本类型
每当读取一个基本类型值时,后台就是自动创建一个相对应的基本包装类型对象,方便我们调用一些方法来操作这些数据,这种自动创建的基本包装类型生存期只存在于一行代码的执行瞬间,此外基本包装还可以通过new操作符来创建,这种方式创建的基本包装类型实例生存期在离开作用域之前一直存在于内存中,这种创建方式创建的实例typeof类型为object。
对下面几种情况进行区分:

var obj = new Object(“hello”);
alert(obj instanceof String);//true,用Object构造函数来创建对象,返回基本类型是根据传入值的基本类型来判断的
var value = “25”;
var number = Number(value);//转型函数
alert(typeof number);//number
var num = new Number(value);//基本包装类型构造函数
alert(typeof num);//object

主要了解一下String基本包装类型的方法:
①字符方法:chatAt()–返回给定位置的字符,此外还可以通过方括号加数字索引来获取,charCodeAt()–返回给定位置的字符的字符编码
②字符串操作方法:这些操作字符串的方法都会返回新的字符串,不会改变原字符串
concat()–拼接字符串,可以含有多个参数,常用+来拼接字符串
另外是三个基于子字符串来创建字符串的方法:
slice(),substring()–接受一个或两个参数,分别为开始结束字符位置索引
substr()–与前两种方法不同之处在于第二个参数为返回字符串的字符个数,没有第二个参数则字符串的末尾作为结束标志
当参数为负数时,结果又有所不同:alice()–参数为负数则从字符串右往左开始计数来确定子字符串的开始结束位置;substr()–根据第一个参数为负则从右往左确定开始位置,第二个参数若为负则置为0;substring()–会将所有的负数都置为0来处理
③位置方法
indexOf(),lastIndexOf()–在字符串中查找子字符串,返回子字符串的位置,若没有找到子字符串则返回-1;一个或两个参数:一个参数为子字符串,第二个参数为开始索引的位置。
④trim()—返回删除字符串前后空格后得到的字符串
⑤字符串大小写转换:toUpperCase(),toLocaleUpperCase()–全部转换成大写,toLowerCase(),toLocaleLowerCase()–全部转换成小写。

以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值