1.值的转换

在JavaScript中,一共有两种类型的值:原始值(primitives)和对象值(objects).原始值有:undefined, null, 布尔值(booleans), 数字(numbers),还有字符串(strings).其他的所有值都是对象类型的值,包括数组(arrays)和函数(functions).
1.1 通过ToPrimitive()将值转换为原始值
JavaScript引擎内部的抽象操作ToPrimitive()有着这样的签名:
    ToPrimitive(input, PreferredType?)
 
可选参数PreferredType可以是Number或者String,它只代表了一个转换的偏好,转换结果不一定必须是这个参数所指的类型,但转换结果一定是一个原始值.如果PreferredType被标志为Number,则会进行下面的操作来转换输入的值 (§9.1):
1.如果输入的值已经是个原始值,则直接返回它.
2.否则,如果输入的值是一个对象.则调用该对象的valueOf()方法.如果valueOf()方法的返回值是一个原始值,则返回这个原始值.
3.否则,调用这个对象的toString()方法.如果toString()方法的返回值是一个原始值,则返回这个原始值.
4.否则,抛出TypeError异常.
 
如果PreferredType被标志为String,则转换操作的第二步和第三步的顺序会调换.如果没有PreferredType这个参数,则PreferredType的值会按照这样的规则来自动设置:Date类型的对象会被设置为String,其它类型的值会被设置为Number.

http://www.cnblogs.com/ziyunfei/archive/2012/09/15/2685885.html

变量var定义提前

不再严格模式下,不使用var关键字就可以声明一个全局变量(不推荐使用这种方式)

这种声明在严格模式下是不行的

建议使用window.name = "xxxxx";这种命名方式来

一般在底部声明变量

常量const关键字

js == 与 === 的区别[转]

1、对于string,number等基础类型,==和===是有区别的
1)不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等
2)同类型比较,直接进行“值”比较,两者结果一样
2、对于Array,Object等高级类型,==和===是没有区别的
进行“指针地址”比较
3、基础类型与高级类型,==和===是有区别的
1)对于==,将高级转化为基础类型,进行“值”比较
2)因为类型不同,===结果为false

Global对象

属性: Infinity / NaN / undefined / null

方法: eval() / isFinite() / isNaN() / parseFloat() / parseInt() / decodeURI() / decodeURIComponent()

encodeURI() / encodeURIComponent()

单体内置对象eval和math

eval()  解析字符串为js脚本并执行

1
string  str = 'console.log("this is eval")';

严格作用域下,eval()里面是一个域,不影响外面的值

并不推荐用eval,效率低,容易被跨域攻击,能不用eval就尽量不用

严格作用域的用法

1
2
3
4
5
6
'use strict'
var numtemp = 1;
console.log("numtemp:",numtemp);
eval('var numtemp = 2;console.log("numtemp:",numtemp)');
console.log("numtemp:",numtemp);
//eval里面的内容不会影响外面的变量

Math对象的属性

Math.PI

Math.E

Math.SQRT2

Math.max()

Math.min()

Math.round()    四舍五入

Math.ceil()           有小数就近一位

Math.floor()          舍去小数位

Math.random()   生成0-1内的随机数

生成范围内的随机数

1
2
3
function randBetween(min,max){
             return min + Math.random*(max-min);
}

对象成员的两种访问方法

点表示法

中括号表示法

Object.keys(obj)  取键值函数的用法

1
2
3
var obj = {a:1,b:2,c:3};
Object.keys(obj);  // => ['a','b','c']
Object.keys(obj).length // => 3

toString函数

1
2
var arr = Object.keys(obj);
arr.toString();  // => 'a,b,c'

join函数

1
2
var arr = Object.keys(obj);
arr.join("ss");  // => 'assbssc'

数组

初始化、检查

1.数组里面什么都可以放,js的7中对象都可以放

2.数组是从0开始索引的

初始化方法

1.构造函数方法

1
2
3
var arr = new Array();  //空的数组
var arr = new Array(3);  //声明长度为3的数组
var arr = new Array('jing','ya');  //声明长度为2的数组

2.字面量方法(没法直接指定成员的个数)

1
2
3
4
var arr = [];
var arr = ['jingya','ya'];
arr[3] = 'xiaolizi'// 自动创建这个成员
arr[6] = 'new';       // 自动创建4,5成员为undefined

数组的检查(数组不属于基本数据类型,object也是,所以不能使用typeof)

不能使用typeof

instanceof  关键字

1
arr instanceof Array  // 返回true

Array.isArray()

1
Array.isArray(arr);  // 返回的还是true

转换和排序

按照字符串的顺序排序,都会修改数组本身的

sort()   ,这个sort里面还可以放函数

1
2
3
4
5
6
var arr = [11,2,3,23,55];
function compareAB(a,b){
     return a>b;
}
arr.sort(compareAB);
console.log('after sort ',arr);

reverse()

栈和队列操作

栈操作,后进先出

push()  后进   ,返回一个新数组的长度   有参数

pop()   后出   ,返回弹出的那个数字       没有参数

队列操作,先进后出

push()   从后压入数据

shift()    从前弹出数据

unshift() 从前压入数据

其他操作

arr.concat(arr1)   两个数组之间的连接

arr.slice(2,5)    // 只取 2,3,4,不取5,不影响原数组本身

arr.splice(1,1)   // 从索引1开始截取一个返回数组,原来的数组就变了

arr.splice(1,0,false,'str')  // 从第1位开始删除0个,插入false和str两个字符

indexOf() / lastIndexOf()  //

indexOf(5)   // 查到的话返回索引位置,查不到的话返回-1

every() / some() / forEach() / filter() / map()

都是传入一个函数做为参数,对传入的每个参数依次执行这个函数

every()如果每个函数的执行结果都是返回true,那么every的执行结果就会返回true

some()只要有一个函数执行返回true,那么some就会返回true

filter()将所有执行返回true的成员组成一个新的数组返回

map()用函数处理每个成员,并将结果组成一个新的数组来返回

forEach()没有返回值,单纯的执行函数

reduce()

reduceRight()


javascript-js中技巧集合的更多相关文章

  1. [JavaScript] JS中对Base64的解析

    JS中对Base64的解析 <script type="text/javascript"> /** * UTF16和UTF8转换对照表 * U+00000000 – U ...

  2. javascript (js)中的基本概念

    1. 基本数据类型 1.1 number (数字)在js中没有整形和浮点型的区分,所有的数字都是浮点型标识, 采用64位的浮点格式来表示数字.如果数字类型用在字符串连接表达式中,则会自动转换成字符串, ...

  3. [JavaScript]JS中的变量声明与有效域

    1.变量声明 var a = 1; //使用var声明变量 b = 1; //不使用var 第一种情况,在当前域中声明一个名为a的变量,如果实在方法内则为局部变量,若在最外层声明则a为全局变量. 第二 ...

  4. js中DOM集合的动态特性

    先引出一个问题:通过调用getElements*()这样的方法返回来类(伪)数组,能对其本身的元素进行排序吗? 答案是不能,因为这些对象的都是NodeList . NamedNodeMap 或 HTM ...

  5. javascript js中的typeof使用

    typeof运算符介 绍:typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型.它返回值是一个字符串,该字符串说明运算数的类型. 你 知道下面typeof运算的结果吗? typeof ...

  6. [JavaScript] js中全局标识正则表达式的lastIndex属性

    在JavaScript中使用正则表达式时,遇到一个坑:第一次匹配是true,第二次匹配是false. 因为在带全局标识"g"的正则表达式对象中,才有“lastIndex” 属性,该 ...

  7. javascript(js)中的substring和substr方法

    1. substring 方法 定义和用法: substring 方法用于提取字符串中介于两个指定下标之间的字符. 语法: stringObject.substring(start,end) 参数   ...

  8. Javascript开发技巧(JS中的变量、运算符、分支结构、循环结构)

    一.Js简介和入门 继续跟进JS开发的相关教程. <!-- [使用JS的三种方式] 1.HTML标签中内嵌JS(不提倡使用): 示例:<button onclick="javas ...

  9. javaScript系列:js中获取时间new Date()详细介绍

    var myDate = new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年份(4位,1970-????)m ...

随机推荐

  1. cogs 1164. 跑步

    1164. 跑步 ★   输入文件:runa.in   输出文件:runa.out   简单对比时间限制:1 s   内存限制:128 MB [题目描述] 路人甲准备跑N (5≤N≤500)圈来锻炼自 ...

  2. Hadoop使用Java进行文件修改删除操作

    Hadoop使用Java进行文件修改删除操作 学习了:http://blog.csdn.net/menghuannvxia/article/details/44651061 学习了:http://bl ...

  3. mysql点滴_02程序中运行sql语句报字符集问题解决

    程序中运行  "SELECT t.EVENT_TYPE_ID FROM RATABLE_EVENT_TYPE t WHERE t.NAME='帐期末费用转移事件'"  报错 错误码 ...

  4. 路由器一键桥接Android实现

    開始之前,首先说一下什么叫一键桥接,所谓一键桥接,就是点击一下.就能够对所连接的路由器进行网络中继设置.以实现路由器能够通过已有的无线路由器进行网络訪问. 那么实现这个功能有几种方法呢?能够说有非常多 ...

  5. nyoj19(排列组合next_permutation(s.begin(),s.end()))

    题目意思: 从n个数中选择m个数,按字典序输出其排列. pid=19">http://acm.nyist.net/JudgeOnline/problem.php?pid=19 例: 输 ...

  6. 公布项目到NPM

    修己安人,内圣外王 近期,在开发Node项目过程中遇到了须要类jQuery深拷贝对象的问题.去Github找了半天,并没有符合的,于是,自己决定写一个(mixin.js),然后推送到NPM(查看Npm ...

  7. codeforces 490 D Chocolate

    题意:给出a1*b1和a2*b2两块巧克力,每次可以将这四个数中的随意一个数乘以1/2或者2/3,前提是要可以被2或者3整除,要求最小的次数让a1*b1=a2*b2,并求出这四个数最后的大小. 做法: ...

  8. nyoj--1185--最大最小值(线段树)

    最大最小值 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 给出N个整数,执行M次询问. 对于每次询问,首先输入三个整数C.L.R: 如果C等于1,输出第L个数到第R个数 ...

  9. 2017第33周四JDK8并发

    Java 8在Lambda表达式.接口默认方式.新的日期API等方面引入的新特性广受关注,同时在并发编程方面也做出了大量改进.以往的几个Java版本都对java.util.concurrent做了不同 ...

  10. 37.Qt网络与通信

    1 获取本机网络与通信 在网络应用中,经常需要获得本机的主机名.IP地址和硬件地址等网络信息.运用QHostInfo,QNetWorkInterface,QNetworkAddressEntry可获得 ...