一种毫无节操的机制---预解释

本文详细解析了JavaScript中的预解析规则,包括变量声明提升、函数声明与表达式的区别、自执行函数的行为特点以及return语句的影响等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:预解释时,不管条件是否成立,都要把所有带var关键字的进行提前声明。

   例子:

-------->

分析:因为预解释时,不管条件是否成,都要把所有带var关键字的进行提前声明,而且var num相当于在window增加一个属性名为num(window.num),"num" in window代表判断num是否为window对象的一个属性,如果是,则会返回true,否则返回false,所以经过预解释后,"num" in window返回true,而取反后为false,所以不会执行num=12的操作,所以console.log(num);的输出结果为undefined。

二:预解释时,只会解释"="左边的,而"="右边的是值,不会参与解释。

    例子:

  ——————————>

当使用匿名函数之函数表达式(就是把函数定义的部分当做一个值赋值给我们的变量或者元素的某一个事件)来定义函数:

——————————>

分析:因为预解释时,只会解释"="左边的,而"="右边的是值,不会参与解释,所以在预解释的时候只解释var fn,所以

在var fn前就调用fn()的时候会报一个TypeError:fn is not a function的错误。

三:自执行函数定义的那个function在全局作用域下不进行预解释,当代码执行到自执行函数时就把函数的定义和执行一起完成了。

 定义和执行一起完成的函数叫做自执行函数。自执行函数有如下几个定义方式:

(function (num){ })(100); ---->圆括号型

~function (num){ })(100);----->波浪号型

+function (num){ })(100);----->加号型

-function (num){ })(100);----->减号型

+function (num){ })(100);----->加号型

!function (num){ })(100);----->感叹号型

除了加上()外还可以通过+、-、~、!等符号来定义,这些符号的意义只是让函数符合语法,可以说只是一个装饰的作用。

四:函数体中的return下面的代码虽然不会再执行了,但是需要进行预解释

(return后面的都是我们的返回值,所以跟着return后面的都不解释。)

例子:

	function fn() {
   	 console.log(num);//--->undefined
    	return function () {

   	 };
    	var num = 100;
	}
	fn();
结果:
	
分析:运行函数的时候,在该函数的私有作用域中预解释的时候,var num被解释,但是因为num=100在return语句下面不执行,所以num没有被定义,所以
console.log(num)输出为undefined。
五:在与解释时,如果名字已经声明过了就不需要重新再声明了,但是定义还是会执行的。
在js中,如果变量和函数的名字重复了,也算是一种冲突。
在全局作用域中预解释,var fn-->window.fn,function fn(fn存放地址,fn=xxxfff000)--->window.fn=xxxfff000.
例子:
   	 fn();    //输出2
   	 function fn() {
       		 console.log(1);
   	 }
	fn();	//输出2

   	 var fn=10;   //fn变为10
	fn();         //报错:TypeError: fn is not a function,后面代码不执行
    	function fn() {
        	console.log(2);
   	 }
	fn();
结果:
	
分析在与解释时,function fn 声明了一个fn,而且声明了就不会再声明了,同时也会定义,但是定义了会被后面的定义覆盖,所以过程为
1、声明+定义fn=xxxfff111 --->2、声明 var fn(但是不需要重新声明,但执行到该步的时候会对fn定义赋值)--->3、声明
声明+定义fn=xxxfff222(不重复声明,但会定义,所以fn=xxxfff222);
	
内容概要:该论文探讨了一种基于粒子群优化(PSO)的STAR-RIS辅助NOMA无线通信网络优化方法。STAR-RIS作为一种新型可重构智能表面,能同时反射和传输信号,与传统仅能反射的RIS不同。结合NOMA技术,STAR-RIS可以提升覆盖范围、用户容量和频谱效率。针对STAR-RIS元素众多导致获取完整信道状态信息(CSI)开销大的问题,作者提出一种在不依赖完整CSI的情况下,联合优化功率分配、基站波束成形以及STAR-RIS的传输和反射波束成形向量的方法,以最大化总可实现速率并确保每个用户的最低速率要求。仿真结果显示,该方案优于STAR-RIS辅助的OMA系统。 适合人群:具备一定无线通信理论基础、对智能反射面技术和非正交多址接入技术感兴趣的科研人员和工程师。 使用场景及目标:①适用于希望深入了解STAR-RIS与NOMA结合的研究者;②为解决无线通信中频谱资源紧张、提高系统性能提供新的思路和技术手段;③帮助理解PSO算法在无线通信优化问题中的应用。 其他说明:文中提供了详细的Python代码实现,涵盖系统参数设置、信道建模、速率计算、目标函数定义、约束条件设定、主优化函数设计及结果可视化等环节,便于读者理解和复现实验结果。此外,文章还对比了PSO与其他优化算法(如DDPG)的区别,强调了PSO在不需要显式CSI估计方面的优势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值