JS一些实用的方法

1、首次为变量赋值时务必使用var关键字


变量没有声明而直接赋值得话,默认会作为一个新的全局变量,要尽量避免使用全局变量。




2、使用===取代==


==和!=操作符会在需要的情况下自动转换数据类型。但===和!==不会,它们会同时比较值和数据类型,这也使得它们要比==和!=快。


[10] === 10    // is false
[10]  == 10    // is true
'10' == 10     // is true
'10' === 10    // is false
[]   == 0     // is true
[] ===  0     // is false
'' == false   // is true but true == "a" is false
'' === false  // is false




3、使用对象构造器


function Person(firstName, lastName){
    this.firstName =  firstName;
    this.lastName = lastName;
}
var Saad = new Person("Saad", "Mousliki");






4、从数组中随机获取成员


var items = [12, 548 , 'a' , 2 , 5478 , 'foo' , 8852, , 'Doe' , 2145 , 119];
var  randomItem = items[Math.floor(Math.random() * items.length)];




5、获取指定范围内的随机数


这个功能在生成测试用的假数据时特别有数,比如介与指定范围内的工资数。


var x = Math.floor(Math.random() * (max - min + 1)) + min;






6、生成从0到指定值的数字数组


var numbersArray = [] , max = 100;
for( var i=1; numbersArray.push(i++) < max;);  // numbers = [1,2,3 ... 100]




7、生成随机的字母数字字符串


function generateRandomAlphaNum(len) {
    var rdmString = "";
    for( ; rdmString.length < len; rdmString  += Math.random().toString(36).substr(2));
    return  rdmString.substr(0, len);
}




8、数组之间追加


var array1 = [12 , "foo" , {name "Joe"} , -2458];
var array2 = ["Doe" , 555 , 100];
Array.prototype.push.apply(array1, array2);
/* array1 值为  [12 , "foo" , {name "Joe"} , -2458 , "Doe" , 555 , 100] */




9、对象转换为数组


var argArray = Array.prototype.slice.call(arguments);




10、获取数组中的最大值和最小值


var  numbers = [5, 458 , 120 , -215 , 228 , 400 , 122205, -85411]; 
var maxInNumbers = Math.max.apply(Math, numbers); 
var minInNumbers = Math.min.apply(Math, numbers);




11、清空数组


var myArray = [12 , 222 , 1000 ];  
myArray.length = 0; // myArray will be equal to [].




12、不要直接从数组中delete或remove元素


如果对数组元素直接使用delete,其实并没有删除,只是将元素置为了undefined。数组元素删除应使用splice。


切忌:


var items = [12, 548 ,'a' , 2 , 5478 , 'foo' , 8852, , 'Doe' ,2154 , 119 ]; 
items.length; // return 11 
delete items[3]; // return true 
items.length; // return 11 
/* items 结果为 [12, 548, "a", undefined × 1, 5478, "foo", 8852, undefined × 1, "Doe", 2154, 119] */
而应:


var items = [12, 548 ,'a' , 2 , 5478 , 'foo' , 8852, , 'Doe' ,2154 , 119 ]; 
items.length; // return 11 
items.splice(3,1) ; 
items.length; // return 10 
/* items 结果为 [12, 548, "a", 5478, "foo", 8852, undefined × 1, "Doe", 2154, 119]
删除对象的属性时可以使用delete。




13、使用length属性截断数组


前面的例子中用length属性清空数组,同样还可用它来截断数组:


var myArray = [12 , 222 , 1000 , 124 , 98 , 10 ];  
myArray.length = 4; // myArray will be equal to [12 , 222 , 1000 , 124].
与此同时,如果把length属性变大,数组的长度值变会增加,会使用undefined来作为新的元素填充。length是一个可写的属性。


myArray.length = 10; // the new array length is 10 
myArray[myArray.length - 1] ; // undefined




14、在条件中使用逻辑与或


var foo = 10;  
foo == 10 && doSomething(); // is the same thing as if (foo == 10) doSomething(); 
foo == 5 || doSomething(); // is the same thing as if (foo != 5) doSomething();
逻辑或还可用来设置默认值,比如函数参数的默认值。


function doSomething(arg1){ 
    arg1 = arg1 || 10; // arg1 will have 10 as a default value if it’s not already set
}




15、保留指定小数位数


var num =2.443242342;
num = num.toFixed(4);  // num will be equal to 2.4432
注意,toFixec()返回的是字符串,不是数字。






16、浮点计算的问题


0.1 + 0.2 === 0.3 // is false 
9007199254740992 + 1 // is equal to 9007199254740992
9007199254740992 + 2 // is equal to 9007199254740994
为什么呢?因为0.1+0.2等于0.30000000000000004。JavaScript的数字都遵循IEEE 754标准构建,在内部都是64位浮点小数表示,具体可以参见JavaScript中的数字是如何编码的.


可以通过使用toFixed()和toPrecision()来解决这个问题。

转载于:https://www.cnblogs.com/cmderq/p/9130911.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259522.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[转]第一章 Windows Shell是什么 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987862】...

一个操作系统外壳的不错的定义是它是一个系统提供的用户界面&#xff0c;它允许用户执行公共的任务&#xff0c;如访问文件系统&#xff0c;导出执行程序&#xff0c;改变系统设置等。MS-DOS有一个Command.COM扮演着这个角色。然而Windows已经有了图形界面环境&#xff0c;他的…

20155222卢梓杰 《Java程序设计》第1周学习总结

20155222 《Java程序设计》第1周学习总结 教材学习内容总结 JDK是一个工具程序&#xff0c;包括了JAVA程序语言&#xff0c;工具程序与JRE&#xff0c;JRE包括了部署技术&#xff0c;JAVA SE API 与 JVM。 教材学习中的问题和解决过程 第一章&#xff1a;JDK的变量和选项如何设…

字符串常量与字符串变量

参考&#xff1a;http://blog.csdn.net/chenwenshi/article/details/6702576 定义&#xff1a;在一个双引号“ ”内的字符序列或者转义字符序列称为字符串常量 例如&#xff1a;“HI HI&#xff01;” “a” “\n\t” 这些字符串常量是不能改变的&#xff0c;如果试图改变指针…

java资源分配算法,java - 资源分配与动态规划算法 - 堆栈内存溢出

给定一组函数f1 ... fn(离散时间)和时间限制(int)&#xff0c;应找到最大输出&#xff0c;即在不同函数之间分配时间以最大化所用函数输出的总和。对于任何函数&#xff0c;任何时候的值表示如果用于所述时间的函数的总输出。 即F(2)函数的总输出&#xff0c;如果使用2秒。 不是…

Factorial Trailing Zeroes 172

题目描述&#xff1a; 给出一个integer n&#xff0c;计算n&#xff01;结尾0的个数 题目分析&#xff1a; 考虑暴力&#xff0c;计算n&#xff01;统计最后面0的个数。先不说数字溢出&#xff0c;其次n是一个integer &#xff0c;O(n)复杂度超时 我们接着考虑&#xff0c;产生…

DateTime.Now.ToString() 用法

//2008年4月24日 System.DateTime.Now.ToString("D"); //2008-4-24 System.DateTime.Now.ToString("d"); //2008年4月24日 16:30:15 System.DateTime.Now.ToString("F"); //2008年4月24日 16:30 System.DateTime.No…

GAP平台

2019独角兽企业重金招聘Python工程师标准>>> 转载于:https://my.oschina.net/u/2441327/blog/846754

二进制与十进制的转换

本文参考:http://www.360doc.com/content/11/0308/14/5327079_99222581.shtml文献整理所得。 1.正整数的十进制转换为二进制. 十进制整数转换为二进制整数采用"除2取余&#xff0c;逆序排列"法。具体做法是&#xff1a;用2整除十进制整数&#xff0c;可以得到一个商…

php记录已经点击过,最近一次的PHP面试题记录,office已到手!

1、explain 具体哪些等级具体有 system、const、range、index、all2、MySQL 优化避免全表查询&#xff0c;首先应考虑在 where 及 order by 涉及的列上建立索引应尽量避免在 where 子句中对字段进行 null 值判断&#xff0c;否则将导致引擎放弃使用索引而进行全表扫描 (可以将字…

原生Ajax讲解

典型的http通信&#xff1a;浏览器向服务器发出请求&#xff0c;服务器向客户端返回响应&#xff0c;浏览器重新加载页面&#xff0c;这种不连续的页面加载方式导致用户的体验变得杂乱&#xff0c;缺乏连贯性。 如&#xff1a; 在一般的web应用程序中&#xff0c;用户填写表单字…

16、Python与设计模式--模板模式

一、股票查询客户端 投资股票是种常见的理财方式&#xff0c;我国股民越来越多&#xff0c;实时查询股票的需求也越来越大。今天&#xff0c;我们通过一个简单的股票查询客户端来认识一种简单的设计模式&#xff1a;模板模式。根据股票代码来查询股价分为如下几个步骤&#xff…

避免滥用子选择器

CSS的选择符是有权重的&#xff0c;当不同选择符的样式设置有冲突时&#xff0c;会采用权重高的选择符设置的样式。 如果CSS选择符权重相同&#xff0c;那么样式会遵循就近原则&#xff0c;哪个选择符最后定义&#xff0c;就采用哪个选择符的样式。 如果忽略了CSS选择符权重&am…

C++中的空类,默认产生哪些类成员函数?

class Empty { public:/*Empty();//默认构造函数Empty(const Empty& rhs);//拷贝构造函数~Empty();//析构函数Empty& operator(const Empty& rhs);//赋值函数Empty* operator&();//取地址运算符const Empty* operator&() const;//取址运算符 const */ prot…

php exist echo,PHP函数file_exists介绍

&#xfeff;定义和用法file_exists() 函数检查文件或目录是否存在。如果指定的文件或目录存在则返回 true&#xff0c;否则返回 false。exists中文翻译为存在的意思。语法file_exists(path)例子Example #1<?phpecho file_exists("test.txt");?>输出&#x…

闭包应用之延迟函数setTimeout

根据HTML 5标准&#xff0c;setTimeout推迟执行的时间&#xff0c;最少是5毫秒。如果小于这个值&#xff0c;会被自动增加到5ms。 每一个setTimeout在执行时&#xff0c;会返回一个唯一ID&#xff0c;把该ID保存在一个变量中&#xff0c;并传入clearTimeout&#xff0c;可以清除…

并行编程2——多核体系架构

1.1 多核处理器定义 多内核处理器架构是指&#xff1a;芯片设计工程师在单个处理器中集成两个或多个 “执行内核&#xff08;即计算引擎&#xff09;”。多内核处理器可直接插入到单一处理器基座中。但是&#xff0c;操作系统会把它的每个执行内核作为独立的逻辑处理器&#x…

21:苹果和虫子2

团队QQ&#xff1a;466373640个人博客&#xff1a;www.doubleq.winc/noi/信息学奥数博客&#xff1a;http://www.cnblogs.com/zwfymqz 1:苹果和虫子2 查看提交统计提问总时间限制:1000ms内存限制:65536kB描述你买了一箱n个苹果&#xff0c;很不幸的是买完时箱子里混进了一条虫子…

php运行代码运行退出为0,php – Selenium测试用例返回进程以退出代码0结束

你使用“phpunit yourTestCase.php”而不是“php yourTestCase.php”吗&#xff1f;我使用phpunit(3.5.14)和“selenium-server-standalone-2.0rc2.jar”运行你的testfile,没有问题(除了测试本身失败)&#xff1a;PHPUnit 3.5.14 by Sebastian Bergmann.ETime: 10 seconds, Mem…

Xcode6中使用initWithTitle:title image:image selectedImage:自定义图片

使用xcode6来运行项目&#xff0c;发现使用原生的tabbar上的图片不显示了。这个问题是因为xcode6中的一些api方法被废弃了,同时tabbar上图片的渲染方式发生了改变。先看xcode6中的tabbar api方法的变更&#xff1a;- (void)setFinishedSelectedImage:(UIImage *)selectedImage …

[Node.js]get/post请求

摘要 在很多情况下&#xff0c;我们的web服务器都需要接受客户端浏览器传递的参数或者数据。最常见的是get和post请求。 获取get请求的内容 get请求传递的参数在url中&#xff0c;参数部分在?后面。因此可以手动解析后面的内容作为get请求的参数。node.js中url模块中的parse函…