<legend id='BgeVO'><style id='BgeVO'><dir id='BgeVO'><q id='BgeVO'></q></dir></style></legend>
  • <i id='BgeVO'><tr id='BgeVO'><dt id='BgeVO'><q id='BgeVO'><span id='BgeVO'><b id='BgeVO'><form id='BgeVO'><ins id='BgeVO'></ins><ul id='BgeVO'></ul><sub id='BgeVO'></sub></form><legend id='BgeVO'></legend><bdo id='BgeVO'><pre id='BgeVO'><center id='BgeVO'></center></pre></bdo></b><th id='BgeVO'></th></span></q></dt></tr></i><div id='BgeVO'><tfoot id='BgeVO'></tfoot><dl id='BgeVO'><fieldset id='BgeVO'></fieldset></dl></div>

    1. <small id='BgeVO'></small><noframes id='BgeVO'>

        • <bdo id='BgeVO'></bdo><ul id='BgeVO'></ul>
        <tfoot id='BgeVO'></tfoot>

        Javascript:避免字符串到整数或浮点类型转换与空或

        时间:2023-08-07
          <i id='anzts'><tr id='anzts'><dt id='anzts'><q id='anzts'><span id='anzts'><b id='anzts'><form id='anzts'><ins id='anzts'></ins><ul id='anzts'></ul><sub id='anzts'></sub></form><legend id='anzts'></legend><bdo id='anzts'><pre id='anzts'><center id='anzts'></center></pre></bdo></b><th id='anzts'></th></span></q></dt></tr></i><div id='anzts'><tfoot id='anzts'></tfoot><dl id='anzts'><fieldset id='anzts'></fieldset></dl></div>
        • <tfoot id='anzts'></tfoot>

            <small id='anzts'></small><noframes id='anzts'>

              <tbody id='anzts'></tbody>
          1. <legend id='anzts'><style id='anzts'><dir id='anzts'><q id='anzts'></q></dir></style></legend>
              <bdo id='anzts'></bdo><ul id='anzts'></ul>

                1. 本文介绍了Javascript:避免字符串到整数或浮点类型转换与空或未定义变量的异常?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  • javascript(V8 引擎)
                  • 谷歌浏览器
                  • 继承了带有大量数字变量类型转换的 javascript 代码.
                  • 如何可靠地将 javascript 字符串类型转换为数字变量(浮点数和整数),并且仍然避免由于未声明或空值而导致脚本停止异常?

                  Tymac 继承了一些 javascript 代码,这些代码需要对变量进行大量类型转换以将浮点数转换为整数到字符串以及这三种类型之间的大量排列.

                  Tymac has inherited some javascript code that requires a lot of type casting of variables to float to integer to string and numerous permutations between these three types.

                  问题是,变量被不规则地声明或定义,从而引入了不可预测的势.此外,代码的排列方式很难将其全部整理出来.

                  The problem is, the variables are declared or defined irregularly, which introduces potential unpredictably. Also, the code is arranged in such a way to make it difficult to sort it all out.

                  我们的目标是在变量声明因代码设置方式而事先不知道时,提出一种风险证明"方法来在浮点整数字符串之间进行类型转换.

                  The goal is to come up with a 'risk proof' way to type-cast variables between float-integer-string when the variable declarations are not known in advance because of the way the code is set up.

                  推荐答案

                  问题

                  在变量可能未全部声明或可能导致 Javascript 异常的情况下,您希望可靠地处理浮点、整数和字符串类型之间的类型转换.

                  Problem

                  You want to reliably handle type cast conversion between float, integer, and string types reliably in cases where the variables may not all be declared or may otherwise potentially cause a Javascript exception.

                  如果可能,请确保至少在尝试类型转换之前声明所有变量.

                  If at all possible, make sure all variables are at least declared before attempting a type cast conversion.

                  此外,了解如何处理 null 并了解 Javascript 中的相等测试.

                  Also, understand how to handle nulls and understand equality testing in Javascript.

                  在这个 Javascript 场景中进行健壮类型检查的一种简单方法是避免:

                  One easy way to do robust type-checking in this Javascript scenario is to avoid:

                  • 未声明的变量
                  • Javascript 对象(又名字典)上未声明的属性
                  • 空值
                  • NaN 值

                  这是一个简单而快速的概述:

                  Here is a simple and quick overview:

                  //
                  var vfftest       = 0.05;                       // float
                  var viitest       = 3000;                       // integer
                  var vssblank      = '';                         // empty string
                  var vssnonblank   = 'hello';                    // non-empty string
                  var vddempty      = {};                         // dictionary with no name-value pairs
                  var vddnonempty   = {'alpha':1,'bravo':'two'};  // dictionary with name-value pairs
                  var vnull         = null;                       // null
                  
                  // check boolean
                  console.log( (vssnonblank) ? 'true' : 'false' ); // true
                  console.log( (vssblank)    ? 'true' : 'false' ); // false
                  console.log( (vfftest)     ? 'true' : 'false' ); // true
                  console.log( (viitest)     ? 'true' : 'false' ); // true
                  console.log( (vnull)       ? 'true' : 'false' ); // false
                  console.log( (vddempty)    ? 'true' : 'false' ); // true
                  console.log( (vddnonempty) ? 'true' : 'false' ); // true
                  console.log( (vnoExisto)   ? 'true' : 'false' ); // EXCEPTION
                  
                  // check toString
                  console.log( (vssnonblank).toString()  );  // hello
                  console.log( (vssblank).toString()     );  //
                  console.log( (vfftest).toString()      );  // '0.05'
                  console.log( (viitest).toString()      );  // '3000'
                  console.log( (vnull).toString()        );  // EXCEPTION
                  console.log( (vddempty).toString()     );  // [object Object]
                  console.log( (vddnonempty).toString()  );  // [object Object]
                  console.log( (vnoExisto).toString()    );  // EXCEPTION
                  
                  // check parseFloat
                  console.log( parseFloat(vssnonblank) ); // NaN
                  console.log( parseFloat(vssblank) );    // NaN
                  console.log( parseFloat(vfftest) );     // 0.05
                  console.log( parseFloat(viitest) );     // 3000
                  console.log( parseFloat(vnull) );       // NaN
                  console.log( parseFloat(vddempty) );    // NaN
                  console.log( parseFloat(vddnonempty) ); // NaN
                  console.log( parseFloat(vnoExisto) );   // EXCEPTION
                  
                  // check parseInt
                  console.log( parseInt(vssnonblank) );  // NaN
                  console.log( parseInt(vssblank) );     // NaN
                  console.log( parseInt(vfftest) );      // 0
                  console.log( parseInt(viitest) );      // 3000
                  console.log( parseInt(vnull) );        // NaN
                  console.log( parseInt(vddempty) );     // NaN
                  console.log( parseInt(vddnonempty) );  // NaN
                  console.log( parseInt(vnoExisto) );    // EXCEPTION
                  
                  // check typeof
                  console.log(typeof vssnonblank);       // string
                  console.log(typeof vssblank);          // string
                  console.log(typeof vfftest);           // number
                  console.log(typeof viitest);           // number
                  console.log(typeof vddempty );         // object
                  console.log(typeof vddnonempty );      // object
                  console.log(typeof vnull);             // object
                  console.log(typeof vnoExisto);         // 'undefined'
                  

                  陷阱

                  • <未声明>为 parseInt parseFloat 和 .toString() 引发异常
                  • null.toString() 抛出异常
                  • parseInt(null) 和 parseFloat(null) 返回 NaN
                  • 如果可以,至少要确保所有变量都已声明.这将防止未声明的值出现异常,但不会出现空值.
                  • 即使您使用 try-catch 块,并确保声明了所有变量,您仍然需要处理 null 异常,这些异常可能会导致您的代码停止.
                  • 以下链接提供了与 Javascript 中的类型转换和比较相关的其他详细信息:

                    The following links provide additional details relevant to type-cast and comparison in Javascript:

                    • 在 ToString() 之前检查 null
                    • 什么是最检查 JavaScript 变量是否为空的可靠方法?
                    • 等于运算符 (== vs ===) 应该用在 JavaScript 比较中吗?
                    • 如何在javascript中将字符串转换为浮点数?
                    • JavaScript 类型转换
                    • 在抛出异常时不要停止 JavaScript
                    • 在 JavaScript 中查找变量类型

                    这篇关于Javascript:避免字符串到整数或浮点类型转换与空或未定义变量的异常?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:为什么空数组类型转换为零?+[] 下一篇:打印/显示 JavaScript 变量的名称而不是它的值

                  相关文章

                  最新文章

                    <legend id='UbGKw'><style id='UbGKw'><dir id='UbGKw'><q id='UbGKw'></q></dir></style></legend>

                    <tfoot id='UbGKw'></tfoot>
                  1. <small id='UbGKw'></small><noframes id='UbGKw'>

                      <bdo id='UbGKw'></bdo><ul id='UbGKw'></ul>

                    1. <i id='UbGKw'><tr id='UbGKw'><dt id='UbGKw'><q id='UbGKw'><span id='UbGKw'><b id='UbGKw'><form id='UbGKw'><ins id='UbGKw'></ins><ul id='UbGKw'></ul><sub id='UbGKw'></sub></form><legend id='UbGKw'></legend><bdo id='UbGKw'><pre id='UbGKw'><center id='UbGKw'></center></pre></bdo></b><th id='UbGKw'></th></span></q></dt></tr></i><div id='UbGKw'><tfoot id='UbGKw'></tfoot><dl id='UbGKw'><fieldset id='UbGKw'></fieldset></dl></div>