我是Javascript的新手,并对函数声明的工作方式感到困惑.我对此做了一些测试并得到了一些有趣的结果:
say();
function say()
{
alert("say");
}
Run Code Online (Sandbox Code Playgroud)
前进声明工作和弹出"说"
相反
say();
say = function()
{
alert("say");
}
Run Code Online (Sandbox Code Playgroud)
没有工作,虽然它也声明了一个函数对象
如果我们声明该函数并在之后重新声明:
function say()
{
alert("speak");
}
say();
function say()
{
alert("say");
}
Run Code Online (Sandbox Code Playgroud)
我得到"说"而不是"说话".这太令人惊讶了!
好.似乎只有最新的函数声明才有效.然后让我们首先声明函数对象,然后是"常规"函数:
say = function()
{
alert("speak");
}
say();
function say()
{
alert("say");
}
say();
Run Code Online (Sandbox Code Playgroud)
另一个惊喜,是"说话",然后是"说话"."常规"功能声明根本不起作用!
是否有所有这些的解释?并且,如果"常规"函数声明真的是"脆弱的"并且可以通过具有相同名称的函数对象轻松覆盖,那么我应该远离那个吗?
另一个问题是:只使用函数对象格式,前向声明是否变得不可能?有没有办法在Javascript中"模拟"它?
我想为另一个应用程序"模拟"多点触摸事件,例如,模拟iPhoto上的放大手势.我搜索了很多来源,但找不到答案.
将事件发送到其他应用程序的最常见方式似乎是使用脚本桥,获取SBApplication然后发送AppleEvent.但似乎普通手势或多点触控事件不适用于常见应用.
此外,没有像CGEventCreateMultiTouchEvent ...()这样的函数,因此我不知道它是否可以通过CGEventPost()实现
NSApplication.sendEvent方法可能能够发送定义了多触摸类型的NSEvent.但是我如何获得另一个应用程序的NSApplication*?
任何帮助将非常感激:)
使用Visual C++ 2012编译时如下代码:
namespace
{
void unusedFunction1()
{
}
}
static void unusedFunction2()
{
}
Run Code Online (Sandbox Code Playgroud)
使用 /Wall,编译器报告
警告 C4505:“unusedFunction2”:未引用的本地函数已被删除
对于静态函数usedFunction2()。但它没有报告unusedFunction1()的任何内容。
似乎在匿名命名空间中包含本地函数会抑制未引用的本地函数警告,这对我来说是一个意想不到且令人不快的副作用。
是否有任何方法可以使用 MSVC 或其他 C++ 编译器为匿名命名空间中未引用的本地函数生成警告?
我使用该函数[GKAchievement loadAchievementsWithCompletionHandler:]恢复当前播放器初始化的成就.但完成汉德从未被称为.
- (void)loadAchievements
{
[GKAchievement loadAchievementsWithCompletionHandler:^(NSArray *achievements, NSError *error)
{
if (error == nil) // !!-- if a breakpoint is set here, it would never be reached
{
@synchronized(_achievementsDictionary)
{
for (GKAchievement* achievement in achievements)
[_achievementsDictionary setObject:achievement forKey:achievement.identifier];
NSLog(@"achievements loaded");
}
}
else
{
NSLog(@"Error in loading achievements: %@", error);
}
}];
}
但是,类似的功能,[GKAchievementDescription loadAchievementDescriptionsWithCompletionHandler:]效果很好:
- (void) retrieveAchievmentMetadata
{
[GKAchievementDescription loadAchievementDescriptionsWithCompletionHandler:
^(NSArray *descriptions, NSError *error) {
if (error != nil)
{
NSLog(@"Error in loading achievement … c++ ×1
c++11 ×1
cocoa ×1
declaration ×1
function ×1
game-center ×1
ios ×1
iphone ×1
javascript ×1
macos ×1
macos-carbon ×1
objective-c ×1
visual-c++ ×1