小编Wei*_*ang的帖子

Javascript中的模糊函数声明

我是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中"模拟"它?

javascript declaration function forward-declaration

11
推荐指数
1
解决办法
5827
查看次数

在Mac OS X上,如何创建多点触控事件并发送到另一个应用程序?

我想为另一个应用程序"模拟"多点触摸事件,例如,模拟iPhoto上的放大手势.我搜索了很多来源,但找不到答案.

将事件发送到其他应用程序的最常见方式似乎是使用脚本桥,获取SBApplication然后发送AppleEvent.但似乎普通手势或多点触控事件不适用于常见应用.

此外,没有像CGEventCreateMultiTouchEvent ...()这样的函数,因此我不知道它是否可以通过CGEventPost()实现

NSApplication.sendEvent方法可能能够发送定义了多触摸类型的NSEvent.但是我如何获得另一个应用程序的NSApplication*?

任何帮助将非常感激:)

macos cocoa macos-carbon objective-c osx-snow-leopard

5
推荐指数
1
解决办法
921
查看次数

如何为匿名命名空间中未引用的本地函数生成警告?

使用Visual C++ 2012编译时如下代码:

namespace
{
    void unusedFunction1()
    {
    }
}

static void unusedFunction2()
{
}
Run Code Online (Sandbox Code Playgroud)

使用 /Wall,编译器报告

警告 C4505:“unusedFunction2”:未引用的本地函数已被删除

对于静态函数usedFunction2()。但它没有报告unusedFunction1()的任何内容。

似乎在匿名命名空间中包含本地函数会抑制未引用的本地函数警告,这对我来说是一个意想不到且令人不快的副作用。

是否有任何方法可以使用 MSVC 或其他 C++ 编译器为匿名命名空间中未引用的本地函数生成警告?

c++ compiler-warnings visual-c++ c++11 visual-c++-2012

5
推荐指数
1
解决办法
2231
查看次数

从未完成[GKAchievement loadAchievementsWithCompletionHandler:]

我使用该函数[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 …

iphone ios game-center

4
推荐指数
2
解决办法
1201
查看次数