请教以下与库函数strcpy函数

在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
function show(){
alert(12);
return function(){
alert(show()());
我觉得这段函数应该会报错,因为 下面的show(括号一),返回的是function(){ alert(3); } 那么这个返回的函数后面还有一个括号来调用它,即function(){ alert(3); }()。
我在全局环境下,写这段代码就会报错,function(){ alert(3); }()。
请问为什么代码一所示函数就可以正常运行呢?谢谢。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
其他地方你的理解是对的,但是你搞错了一点:
我觉得这段函数应该会报错,因为 下面的show(括号一),返回的是
function(){ alert(3); } 那么这个返回的函数后面还有一个括号来调用它,即function(){ alert(3); }()。
show()返回的并不是函数的那一大段,函数是存在内存里的,返回的只是指向这个函数的引用。
说到这里你可能还不太理解什么叫引用,简单来说就是:对象本身存在内存的某个位置,而变量只能持有一个指向这个位置的标记。你可以想一想C语言里的指针。
这时就好理解了,show()()并不是
function () {
这只是简单的字符串替换,JavaScript并不是这么工作的。
return function () {
这段代码的实际过程是:在内存中创建匿名函数,将这个函数的引用返回出去。
所以show()得到的是对匿名函数的引用x,然后x()执行了这个匿名函数。
所以根本不会有什么错误。
说了这么多题主并不一定能完全理解,所以给出一些代码,题主可以试一试。
var fa = function() {
alert('hello,world');
var fb = function() {
alert('hello,world');
alert(fa === fb); //结果是false
这是因为内存中出现了两个长得完全一样的函数,但是他们仍然是两个函数。
function () { return 1 } === function () { return 1; }
); //结果仍然是false
现在考虑向一个函数传入另一个函数呢?
var f = function (x) {
alert('执行f,下面将执行x');
alert('x执行完了,现在已经回到了f中');
f(function () {
alert('x执行中');
题主不妨亲自试一试。
上面的代码说明了在JavaScript中,函数和其他的引用类型一样,可以方便地传入另一个函数,被函数返回,当然,传入和返回的都只是对函数的引用,而不是函数本身,更不是函数的那段字符串。
函数表达式有两种,匿名的和具名的:
var af = function () {
//这是一个匿名函数表达式
var nf = function name() {
//这是一个具名函数表达式
匿名函数表达式很容易看出来,就是没有名字嘛啊哈哈哈。
具名函数表达式则需要和函数声明语法进行区别:
function name () {
//这是一个函数声明
var nf = function name() {
//这是将一个函数表达式赋值给一个变量
实际上只有明显的使用上面代码中那种函数声明方式,JS才会把它当作是声明,否则就会当作表达式,比如 提到的那几种形式:
(function name() {
//不管有没有函数名,这个东西都会被看作是函数表达式
其他形式可以参考 的答案。
具名函数表达式(NFE)和函数声明还有一个有意思的区别,就是在NFE中,你可以访问函数名但是不能修改函数名。
function f1() {
console.log(f1); //执行后显示函数f1本身
console.log(f1); //执行后显示42
var f2 = function nfe() {
console.log(nfe); //执行后显示函数nfe本身
console.log(nfe); //执行后还是显示nfe本身,也就是说上面写nfe这个操作是无效的。
更详细的内容参考我之前的问题:
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
代码一其实是 函数柯里化 即 将函数当做值传递给下一个函数,形如
var k = show();
var g = k();
那么你的这句为什么会报错呢?
function(){
因为JavaScript可以执行函数表达式,但是不能执行函数声明,也就是说,JavaScript把
function(){
当做了函数声明,想要正常运行,在函数声明的外部套一对小括号即可,像这样:
(function(){
当然,想要套其他的玩意也行,比如:
+function(){
-function(){
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
可以参考知乎中的回答
1)函数声明、函数表达式
function(){alert(3);}();
函数声明不能立即执行
函数表达式可以的
解析器识别函数声明的条件是执行语句以function关键字开始,那么自然,只要在function关键字的前面有任何其他的元素,就会从函数定义转变为函数表达式
~function() {}();
!function() {}();
void function() {}();
可以执行的
function(){alert(3);}();
解析为函数申明,会报语法解析错误
2)括号的作用
(function(){alert(3);})();
确定优先级及分组运算,会将括号中语句作为表达式运行
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
function show(){
var f=function(){alert(3);};
alert(12);
var s=show();
alert(s());
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
谢谢各位的详细回答,相信如果有像我一样问题的人看到了,也能加深对函数的理解。
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。(window.slotbydup=window.slotbydup || []).push({
id: '5450491',
container: s,
size: '600,50',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '3991088',
container: s,
size: '100,240',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '3991102',
container: s,
size: '100,240',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '4044404',
container: s,
size: '240,146',
display: 'inlay-fix'
向老师请教6种选择函数的区别
理想高三级同学(菠菜一段)
还需要 6194 积分才能升级
向老师请教6种选择函数的区别
浏览:7805
欢迎光临理想论坛,由于您没有登录,所以无法查看到论坛的附件及隐藏分区,也无法与其他会员交流。
还没有理想论坛的帐号?
以下6种选择函数,具体用于什么情况?
以下是我的理解和疑问:
根据条件求不同的值.
IF(X,A,B)若X不为0则返回A,否则返回B,这个好理解,过了。
IFF用法同IF一样,那么IFF为什么还有必要存在?
同IF判断相反.
IFN(X,A,B)若X不为0则返回B,否则返回A
IF (X,B,A)把A和B对调,是否就与上句等效? 如果我理解得对的话,那么,这一函数也过了
根据条件求不同的值,可中止.
IFC(X,A,B)若X不为0则返回A,否则返回B.IFC与IF函数的区别:根据X的值来选择性执行A、B表达式.
IFC(CLOSE&OPEN,HIGH,TESTSKIP(1));L;表示当日收阳则返回最高值,并执行下一句&L;&,否则退出公式计算
还是没有看懂IFC与IF的区别
VALUEWHEN(COND,X)
当COND条件成立时,取X的当前值,否则取VALUEWHEN的上个值.
这个,是否与ref(x,barslast(COND))效果一样?
TESTSKIP(A):满足A则直接返回.
TESTSKIP(A)
表示如果满足条件A则该公式直接返回,不再计算接下来的表达式 注意:A为非序列数据,只取最后一个数据
非序列数据是指什么?
序列数据又指什么呢?
[ 本帖最后由 江哥323323 于
15:34 编辑 ]股票论坛 www.55188.com
积分23806&理想币10152 个&彩币55 个&共享币8213 个&注册时间&
理想小六级同学
还需要 695 积分才能升级
IFF用法同IF一样,那么IFF为什么还有必要存在?
& &-- 可能是为了兼容某些其他股软。
同IF判断相反.
IFN(X,A,B)若X不为0则返回B,否则返回A
IF (X,B,A)把A和B对调,是否就与上句等效? 如果我理解得对的话,那么,这一函数也过了,--是。
根据条件求不同的值,可中止.
IFC(X,A,B)若X不为0则返回A,否则返回B.IFC与IF函数的区别:根据X的值来选择性执行A、B表达式.
IFC(CLOSE&OPEN,HIGH,TESTSKIP(1));L;表示当日收阳则返回最高值,并执行下一句&L;&,否则退出公式计算
还是没有看懂IFC与IF的区别
& &-- 猜:TESTSKIP(1)用在IFC中是有条件的skip;而用在IF语句中则是无条件地skip,即不管条件是否满足。
VALUEWHEN(COND,X)
当COND条件成立时,取X的当前值,否则取VALUEWHEN的上个值.
这个,是否与ref(x,barslast(COND))效果一样?& && && && &&&-- 是的
TESTSKIP(A):满足A则直接返回.
TESTSKIP(A)
表示如果满足条件A则该公式直接返回,不再计算接下来的表达式 注意:A为非序列数据,取最后一个数据。
序列数据又指什么呢?& &-- 例如 c,h 等
非序列数据是指什么?& &-- 例如 5,capital 等
积分1305&理想币729 个&彩币5 个&共享币349 个&注册时间&
理想小六级同学
还需要 695 积分才能升级
回复 楼主 @江哥323323
IFC 我从未碰过,在您的提醒下,也去试了一下,结果是:
TESTSKIP(1)用在IFC中,TESTSKIP(1)相当于写drawnull,但对后面的语句无影响(不skip)。&&
TESTSKIP(1)用在IF中,则不管条件是否满足,一律skip,即相当于没有IF的 “TESTSKIP(1);”语句。
如果IFC中没有&&testskip 语句,则同IF。
仅供参考,不一定对。因为没有实验全。
谢谢天涯老师!
积分1305&理想币729 个&彩币5 个&共享币349 个&注册时间&
理想初二级同学
还需要 186 积分才能升级
哈哈~~~
积分5814&理想币2247 个&彩币0 个&共享币6895 个&注册时间&
理想高三级同学(菠菜一段)
还需要 6194 积分才能升级
回复 2楼 @天涯之鸟
IFC(X,A,B)若X不为0则返回A,否则返回B.IFC与IF函数的区别:根据X的值来选择性执行A、B表达式.
IFC(CLOSE&OPEN,HIGH,TESTSKIP(1));L;表示当日收阳则返回最高值,并执行下一句&L;&,否则退出公式计算
如果以文套文的话,是否相当于
IF(X,A and 执行下一句L,退出公式计算);
===============================================
序列数据又指什么呢?& &-- 例如 c,h 等,是不是专指单一英文字母?
非序列数据是指什么?& &-- 例如 5,capital 等,是否指凡是不属于【序列数据】的其它所有数据?
积分23806&理想币10152 个&彩币55 个&共享币8213 个&注册时间&
理想小六级同学
还需要 695 积分才能升级
回复 5楼 @江哥323323
例:P:IFC(x,C,TestSkip);
软件中说明的意思, 似应如你在5楼解释的那样。(我也支持如此实现)
但实验结果不是这样,而是:
& && &P:IFC(x,C,TestSkip);& & 等价于& &&&P:IFC(const(x),C,drawnull);& &
(如是,则并不影响随后语句的执行,即无skip功能)
至少在我机器上是这样。所以,现在实现的IFC要么有BUG,要么就没有必要存在。
另,我理解股软里的序列数据相当于特殊的可变长数组,在每一条K线上定义一个值。而非....是指单个常数。
积分1305&理想币729 个&彩币5 个&共享币349 个&注册时间&
理想高三级同学(菠菜一段)
还需要 6194 积分才能升级
回复 6楼 @天涯之鸟
我现在希望的是
IFC(x,C,TestSkip);
能够类似于
IF 条件成立
& &goto 100
& &goto 200
语句100----条件成立,从这一句开始,并向下运行
语句200----条件不成立,从这一句开始,并向下运行
积分23806&理想币10152 个&彩币55 个&共享币8213 个&注册时间&
理想小三级同学
还需要 46 积分才能升级
求权威解释
我看着这些内容也是自己“猜”。期待规范的权威解释。
什么叫做序列数?什么是非序列数?区别在哪里?用处用法又是什么?这些基本概念谁能给出哪里有“权威”的解释。
还有:什么叫做“直接返回”?直接返回“什么”?返回到哪里?理解起来都感觉到很含糊,都请高手指点。
关于“函数返回A”的理解:这其中有一个重要的概念就是“当前周期”。函数运算需要依据明确的自变量取值,函数运算的结果(函数值)需要明确用(赋值)到哪里。股软中的函数“自变量”及“函数值”如果没有明确“当前周期”的概念,就非常容易让人感觉不适。函数中的自变量应当是“当前周期”(指定的一根K线所对应的时间段),一切参与运算的变量都是依据“当前周期”的定位决定的,而函数值(即函数运算的结果)除非在运算法则中有特别的说明,都是赋值给“当前周期”的。函数表达式F(X,A,N)括号中的各个元素,最好理解为“参与运算的元素”,因为按照一般函数的概念,函数值Y是对应于自变量X的,Y是要赋值给对应的X的,即Y=F(X),而股软中参与运算的元素则用自变量来理解就难以理清关系。
积分154&理想币1 个&彩币0 个&共享币55 个&注册时间&
快速回复主题
禁用 URL 识别
使用个人签名
接收新回复邮件通知
发帖请务遵守本站的相关规则,所有发表(包括转发)政治、色情非法信息者本站将实时提供发贴者个人信息给公安局,追究责任,特此申明!
具体规则请参见《》
您需要登录后才可以发帖
发表帖子[完成后可按 Ctrl+Enter 发布]
理想论坛上的网友发表的帖子纯属个人意见,理想论坛不负任何责任!广告赞助商内容与本站无关!
理想论坛值班电话[9:30~18:30]: &#6 5518-1 &#66 3090 ☎ 186 (广告)☎ 187 (广告)
工业和信息化部信息备案:voidfun(SLIST*h,intx){SLIST*p,*q,*s;//定义结构体类型指针s=(SL,
请教C语言高手帮忙解释以下函数的功能,最好就是解释下每个语句的意义,最好有注释,谢谢,大谢!
-爱问知识网
void fun(SLIST *h, int x){SLIST *p,*q,*s;
//定义结构体类型指针s=(SLIST *)malloc(sizeof(SLIST));//动态生成一个结构体的节点,将节点的地址赋给ss-&data=x; //为结构体成员data 赋值xq=h; //使q指向与h相同的控件p=h-& //p指向h直接后继节点的地址while(p!=NULL&&x&q-&data)//如果p指针不指向NULL 并且 x的值大于q指针指向的节点的数据域的值 就进入循环{q=p;
//使p指向p指向的节点的地址p=p-& //p指向p的下一个节点的地址,即指针后移 ,通过循环找到合适的位置}s-&next=p; //使s的指针域指向p节点的地址q-&next=s; //使q的指针域指向s节点的地址,这两句就是将s节点插入链表中}扫二维码下载作业帮
3亿+用户的选择
下载作业帮安装包
扫二维码下载作业帮
3亿+用户的选择
请教下列函数的不定积分1 y=sinx/x2 y=cosx/x3 y=1/lnx4 y=e的-x2次方
作业帮用户
扫二维码下载作业帮
3亿+用户的选择
用无穷小代换sin x / x在x趋于零是,等价于x
为您推荐:
其他类似问题
扫描下载二维码请教,哪些是属于未来函数? 【解答:一鸣】
我的图书馆
请教,哪些是属于未来函数? 【解答:一鸣】
未来函数有:ZIG之字转向,BACKSET(X,N),若X非0,则将当前位置到N周期前的数值设为1。PEAK 前M个ZIG转向波峰值PEAKBARS 前M个ZIG转向波峰到当前距离。TROUGH前M个ZIG转向波谷值。TROUGHBARS 前M个ZIG转向波谷到当前距离。 #YEAR& && && &跨周期引用#Year& && && &使用跨周期数据,例如在日线中引用本周周线或本月月线或本年年线数据& && && && && & #MONTH& && && &跨周期引用#Month& && && && && && && && &#WEEK& && && &跨周期引用#Week& &FFT& && && &含FFT傅立叶变换函数& && && &FFT(X,N):傅立叶变换怀疑是未来函数的有:CAPITAL& && && &含Capital流通盘& && && &流通盘在增发、分红、债转股后可能变了。& && && && && & DYNAINFO& && && &含DynaInfo动态数据& && && &DynaInfo(k):动态信息& && && && && & FINANCE& && && &含Finance财务数据& && && &Finance(k):财务信息& && && && && && && && && && &&&& && && && && && && && && &&&WINNER& && && &含Winner类函数& && && &WINNER(x)、LWINNER(x)、PWINNER(X)等获利盘比例类的和COST也有未来函数的性质,有时可使信号产生漂移。& && && && && & COST& && && &含Cost类函数& && && &COST(N)、COSTB(N)& && && && && && && && && && &&&动态行情DYNAINFO() 、财务数据FINANCE()(除FINANCE(51) FINANCE(52)几个外)、指标函数 COST() WINNER() 以及[DATACOUNT]等等有点像未来函数但并不是未来函数的有:forcast(()forcast是从slope计算斜率引申来的,slope不是未来,forcast也就不是未来slope只用过去样本(参数)计算回归线的斜率,不是未来任意一点只取其前面的参数样本回归计算,所以不会受后面新增K线影响要看出为何不是未来,以fft是未来为例说明FFt每次都取全部K线数据找到最佳配曲线(模型),而赋予全部曲线的值,每增加一根新K线,就按全部K线数据重新找到最佳配曲线(模型), 再重新赋予全部曲线的值,所以每增加一根K线前面的FFT值会全部都改变,只是改变幅度或大或小1、含有未来数据指标的基本特征是买卖信号不定,常常是某日发出了买入信号,第二日如果继续下跌该信号就会消失,这也正是该指标的危害所在,从历史上看信号很准,但应用时切不可信以为真。这个特征也是验证一个指标是否含有未来数据的基本方法。大智慧能够带来未来数据的函数不多,下面列出全部可能的函数,如果公式中含有这些函数就要警惕,需要说明的是含有这些函数不一定表明就含有未来数据,还要分析清楚它的详细算法才能确定。 ZIG之字转向,BACKSET(X,N),若X非0,则将当前位置到N周期前的数值设为1。PEAK 前M个ZIG转向波峰值PEAKBARS 前M个ZIG转向波峰到当前距离。TROUGH前M个ZIG转向波谷值。TROUGHBARS 前M个ZIG转向波谷到当前距离。 2、验证指标是否含有未来数据的方法:前面已经提到基本方法是看信号是否确定,即一个信号出现后是否会随着未来k线图的走势消失或指标线发生变化。当然这种方法不能立刻知道是否含有未来数据,需要使用一段时间才能判定。另一种方法是搞清公式的算法,是否含有未来数据立刻便知。3、可能带来未来数据函数的用途:事实上,设计前面列举的这些函数时,并不是为使用未来数据的,在公式中恰当运用不会带来未来数据。在指标的使用当中,它仅做为一种参考工具来用,当指标发出信号时,还是加以分析它发出这个信号是不是合理,等,如有的指标在实战中发现当它发出信号时,可能观察1到3天量能变化等,因为这个指标发出信号时只是提示你股价振荡幅度在减小,底可能在未来的几天内完成,如果底部没有完成迹象,信号会消失,等到下一个环节,股价振荡幅度小时在发出信号,这就是某个指标的结果,还有就是指标请不要用于股价大幅杀跌行情中,并对个股业绩行业等进行研究,说这么多只想了解指标中的未来数据,因为如果正确理解和使用它并没有坏处。4、未来数据主要有以下两种类型:第一种类型:在某一天发出买入信号,几天后如股票上涨则提示当时的信号成功,如股票下跌则信号消失。投资者根本无所适从,更不要说盈利。第二种类型:如果今天股票上涨,会在几天前低价位的某一天出现买入信号。你会经常看到有信号成功,但永远也无法介入,因为没有人能买到几天前的股票。这种手法比较隐蔽,许多号称没有使用未来数据、信号不会消失的公式使用的就是这种方法。检查未来数据的方法:1、如果公式中使用了zig,backset,week,month,year,troughb,trough,peak等函数语句,可以判定使用了未来数据。2、可通过分析家中的“时空隧道”或专门的软件来判断未来数据大致分为以下几种: 1、使用ZIG类(之字转向函数) ZIG类(之字转向函数)有: ZIG(K,N) 之字转向,当价格变化量超过N%时转向。 PEAK(K,N,M) 向前数第M个ZIG转向波峰值,表示之字转向ZIG(K,N)的前M个波峰的数值。 PEAKBARS(K,N,M) 向前数第M个ZIG转向波峰到本周期的距离,表示之字转向ZIG(K,N)的前M个波峰到本周期的周期数。 TROUGH(K,N,M) 向前数第M个ZIG转向波谷值,表示之字转向ZIG(K,N)的前M个波谷的数值。 TROUGHBARS(K,N,M) 向如数第M个ZIG转向波谷到当前距离,表示之字转向ZIG(K,N)的前M个波谷到当前的周期数。 这些函数对于辅助形态判断是有帮助的,可是确实都可能引用未来数据,这是大家要小心的。 2、指定买入卖出日期。 有的公式没有ZIG,可是指定买入,指定卖出,这样自然胜率很高,可是没有意义了。 3、指定买入、卖出价格 一般多发生在交易系统里,比如指定买入价在当日最低价、卖出在当日最高价,可实际上最低、最高是每日交易结束后才可以知道的,所以没有用,我们可以看到一些股票尾市最后一刻突然拉涨停或突然打跌停的情况,除了主力等相关人员,谁事先知道? 4、跨周期或在长周期编制公式。 WINNER 数据!
TA的最新馆藏
喜欢该文的人也喜欢}

我要回帖

更多关于 以下哪个选项为函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信