GVKun编程网logo

if / else语句中的函数声明?(if,else函数的使用方法)

3

想了解if/else语句中的函数声明?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于if,else函数的使用方法的相关问题,此外,我们还将为您介绍关于android中的ifelse语句、a

想了解if / else语句中的函数声明?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于if,else函数的使用方法的相关问题,此外,我们还将为您介绍关于android中的if else语句、angularjs – 如何使用ngdoc来记录角度服务中的函数声明?、c – SSE内在函数中的if / else语句、c – 在if … else语句中嵌入案例标签的新知识。

本文目录一览:

if / else语句中的函数声明?(if,else函数的使用方法)

if / else语句中的函数声明?(if,else函数的使用方法)

函数声明如何处理?

var abc = '''';if(1 === 0){    function a(){        abc = 7;    }}else if(''a'' === ''a''){    function a(){        abc = 19;    }}else if(''foo'' === ''bar''){    function a(){        abc = ''foo'';    }} a();document.write(abc); //writes "foo" even though ''foo'' !== ''bar''

此示例在Chrome和Firefox中产生不同的输出。Chrome输出,foo而FF输出19

答案1

小编典典

当问这个问题时,ECMAScript5(ES5)盛行。在ES5的严格模式下,函数声明不能​​嵌套在一个if块中,如问题所示。在非严格模式下,结果是不可预测的。不同的浏览器和引擎针对如何处理块内的函数声明实现了自己的规则。

许多浏览器都支持ECMAScript2015(ES2015),以至于现在在block中允许使用函数声明。在ES2015环境中,块内的函数声明将作用于该块内。问题中的代码将导致未定义的函数错误,因为该函数a仅在if语句范围内声明,因此不存在于全局范围内。

android中的if else语句

android中的if else语句

我是Android的新手,在互联网上找到了一些很好的教程,所以我尝试了一个带有if-else语句的简单活动.我正在尝试“正确和错误”的提示/ Toast:

Button page1 = (Button) findViewById(R.id.button2);
       page1.setonClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                final ImageView iv1 = (ImageView) findViewById(R.id.imageView1);
                if (iv1.equals(R.drawable.airplane1)) {
                    Toast.makeText(getApplicationContext(), "Correct",
                            Toast.LENGTH_SHORT).show();
                } else if (iv1.equals(R.drawable.airplane2)) {
                    Toast.makeText(getApplicationContext(), "Please put an answer",
                            Toast.LENGTH_SHORT).show();
                } else if (iv1.equals(R.drawable.airplane3)){
                    Toast.makeText(getApplicationContext(), "Wrong",
                            Toast.LENGTH_SHORT).show();
                }
            }

       });

我不确定我的if-else语句有什么问题,但根本没有提示.我尝试删除(iv1.equals(R.drawable.airplane3))和(iv1.equals(R.drawable.airplane2))然后它只显示错误的Toast.我似乎无法正确地提示我.

这是我班级的完整代码:

public class MainActivity extends Activity {
private static final Random imagerandom = new Random();

private static final Integer[] Imagesnumber = 
    { R.drawable.airplane1, R.drawable.airplane2, R.drawable.airplane3, };
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Integer a = Imagesnumber[imagerandom.nextInt(Imagesnumber.length)];
    final ImageView iv = (ImageView) findViewById(R.id.imageView1);

    View nextButton = findViewById(R.id.button1);
    nextButton.setonClickListener(new Button.OnClickListener() {
         public void onClick(View V) {
              int resource = Imagesnumber[imagerandom.nextInt(Imagesnumber.length)];
              iv.setimageResource(resource);
         }
    });
    Button page1 = (Button) findViewById(R.id.button2);
       page1.setonClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                final ImageView iv1 = (ImageView) findViewById(R.id.imageView1);
                if (iv1.equals(R.drawable.airplane1)) {
                    Toast.makeText(getApplicationContext(), "Correct",
                            Toast.LENGTH_SHORT).show();
                } else if (iv1.equals(R.drawable.airplane2)) {
                    Toast.makeText(getApplicationContext(), "Please put an answer",
                            Toast.LENGTH_SHORT).show();
                } else if (iv1.equals(R.drawable.airplane3)){
                    Toast.makeText(getApplicationContext(), "Wrong",
                            Toast.LENGTH_SHORT).show();
                }
            }

       });




}

}

解决方法:

iv1.getDrawable().getConstantState().equals(getResources().getDrawable(R.drawable.airplane1).getConstantState())                                                                                                                                                                                                                                                                                                                                                                                                                                              

angularjs – 如何使用ngdoc来记录角度服务中的函数声明?

angularjs – 如何使用ngdoc来记录角度服务中的函数声明?

我想将ngdoc文档添加到角度服务中的函数声明中.我如何在下面的示例中为myFunction执行此操作?

我估计我需要像@closure,@ functionOf或@functionIn这样的东西.

请注意(与myMethod相反)myFunction不是一种方法.

/**
 * @ngdoc service
 * @name myApp.service:myService
 * @description
 *   My application.
 */
angular
  .module('myApp')
  .factory('myService',function() {
    'use strict';

    var x = 0;

    /**
     * @ngdoc function
     * @name ?
     * @description
     *   How can this be identified as being within the closure of 
     *   myService,and not be described as a constructor?
     */
    function myFunction (z) {
      x++;
      x += z;
    }

    return {
      /**
       * @ngdoc method
       * @name myMethod
       * @methodof myApp.service:myService
       * @description
       *   A method of myService.
       */
      myMethod : function (x) {
        myFunction(x);
      }
    };
  })

解决方法

您要查找的关键名是@methodof注释.
当我使用grunt-ngdocs为服务编写文档时,它最终看起来如下所示:

/**
  * @ngdoc overview
  * @name module
  * @description A small module containing stuff
  */
angular
  .module(module,[])
  .factory('name',factory);

/**
  * @ngdoc object
  * @name module.name
  * @description Its a pretty bad factory
  */
function factory() {
  return {
    doSomething: doSomething
  };

  /**
    * @ngdoc function
    * @name module.name#doSomething
    * @methodof module.name
    * @description Does the thing
    * @param {string=} [foo='bar'] This is a parameter that does nothing,it is
                                   optional and defaults to 'bar'
    * @returns {undefined} It doesn't return
    */
  function doSomething(foo){...}
}

c – SSE内在函数中的if / else语句

c – SSE内在函数中的if / else语句

我正在尝试使用SSE内在函数优化一小段代码(我是关于该主题的完全初学者),但我有点坚持使用条件.

我原来的代码是:

unsigned long c;
unsigned long constant = 0x12345678;
unsigned long table[256];
int n,k;

for( n = 0; n < 256; n++ )
{
  c = n;
  for( k = 0; k < 8; k++ )
    {
      if( c & 1 ) c = constant ^ (c >> 1);
      else c >>= 1;
    }
  table[n] = c;
}

这段代码的目标是计算一个crc表(常量可以是任何多项式,它在这里不起作用),

我想我的优化代码是这样的:

__m128 x;
__m128 y;
__m128 *table;

x = _mm_set_ps(3,2,1,0);
y = _mm_set_ps(3,0);
//offset for incrementation
offset = _mm_set1_ps(4);

for( n = 0; n < 64; n++ )
{
    y = x;
    for( k = 0; k < 8; k++ )
    {
        //if do something with y
        //else do something with y
    }
    table[n] = y;
    x = _mm_add_epi32 (x,offset);
}

我不知道如何通过if-else语句,但我怀疑有一个聪明的伎俩.有谁知道如何做到这一点?

(除此之外,我的优化可能非常差 – 对它的任何建议或更正都会得到最大的同情)

解决方法

你可以完全摆脱if / else.回到我制作MMX汇编代码的日子,这是一个常见的编程活动.让我首先对“虚假”声明进行一系列转换:
c >>= 1;

c = c >> 1;

c = 0 ^ (c >> 1);

我为什么要介绍独家或?因为在“真实”声明中也可以找到exclusive或者:

c = constant ^ (c >> 1);

注意相似性?在“真实”部分中,我们用常数xor,在虚假部分中,我们xor为零.

现在,我将向您展示整个if / else语句的一系列转换:

if (c & 1)
    c = constant ^ (c >> 1);          // same as before
else
    c =        0 ^ (c >> 1);          // just different layout

if (c & 1)
    c =  constant      ^ (c >> 1);
else
    c = (constant & 0) ^ (c >> 1);    // 0 == x & 0

if (c & 1)
    c = (constant & -1) ^ (c >> 1);   // x == x & -1
else
    c = (constant &  0) ^ (c >> 1);

现在两个分支只在二进制的第二个参数中有所不同,并且可以从条件本身中简单地计算,从而使我们能够摆脱if / else:

c = (constant & -(c & 1)) ^ (c >> 1);

免责声明:此解决方案仅适用于二进制补码架构,其中-1表示“所有位设置”.

c – 在if … else语句中嵌入案例标签

c – 在if … else语句中嵌入案例标签

G接受此代码,它的行为与我期望的一样:
#include <cassert>void example (int value,bool condition) {  switch (value) {  case 0:    if (condition) {  case 1:      assert(condition || value == 1);    } else {      assert(!condition && value == 0);    }    assert(value == 0 || value == 1);  }}int main () {  example(0,false);  example(1,false);  example(0,true);  example(1,true);}

也许这是一个愚蠢的基本问题,但代码嗅到一边,将一个案例标签放在if … else块中是否有效,并且所有表现良好的编译器都会正确生成将在输入时跳过else块的代码通过案例1?

解决方法

就C而言(草案N3936):

>大小写和默认标签本身不会改变控制流程,这种流程在这些标签上继续畅通无阻.
>通常,作为switch的主题的子语句是复合的,case和default标签出现在(复合)子语句中包含的顶级语句中,但这不是必需的.(§6.4.2 – 6)
>可以转换为块,但不能以初始化绕过声明的方式. (§6.7 – 3)

你在做什么在技术上是可以的,当然这并不意味着你应该.

今天关于if / else语句中的函数声明?if,else函数的使用方法的介绍到此结束,谢谢您的阅读,有关android中的if else语句、angularjs – 如何使用ngdoc来记录角度服务中的函数声明?、c – SSE内在函数中的if / else语句、c – 在if … else语句中嵌入案例标签等更多相关知识的信息可以在本站进行查询。

本文标签: