在Badoo的时候我们写了大量的JS脚本,光是在我们的移动web客户端上面就有大概60000行,可想而知,维护这么多JS可是相当具有挑战性的.在写如上规模js脚本客户端应用的时候我们必须对一件事保持警惕,就是避免异常的发生.在本篇文章里面,我想谈谈一部分类型检查异常,这时候你或许很难碰到 - 一个TypeError 在MDN链接里面是这么解释的: "当传递给操作符或者函数的操作符或者参数与操作符或者函数本身所期望的操作符或函数类型不兼容的时候就会抛出一个TypeError" -MDN…
先吐槽一下博客园的编辑器,太不好用了,一旦粘贴个表格进来就会卡死,每次都要用html编辑器写,不爽! 关于javascript的类型检测,早在实习的时候就应该总结,一直拖到现在,当时因为这个问题还出了线上bug.今天回顾<编写可维护的javascript>第八章“避免空比较”,里面详细说明了javascript中各种类型比较问题,现在想来当时的代码基本把所有的忌讳都犯了一遍,就那么上线了简直对不起党和人民... 类型检测 类型 检测方法 检测对象 检测结果 缺点 备注 原始值 typeof 字…
RX编程笔记——JavaScript 获取地理位置 2016-07-05…
原文:Javascript学习1 - Javascript中的类型对象 1.1关于Numbers对象. 常用的方法:number.toString() 不用具体介绍,把数字转换为字符串,相应的还有一个方法:toLocalString()                     number.toFixed(digits) 把numberl转换为小数,digits代表小数几位.         常用的与Number对应的全局函数:isNaN(vars) 判断vars是不是数字,         如…
JavaScript的数据类型分为两类:原始类型和对象类型.其中,原始类型包括:数字.字符串和布尔值.此外,JavaScript中还有两个特殊的原始值:null和undefined,它们既不是数字也不是字符串,更不是布尔值.它们通常分别代表了各自特殊类型的唯一成员.JavaScript中除了数字.字符串.布尔值.null和undefined之外的就是对象了. JavaScript中值类型和引用类型的区别 JavaScript中的值类型的值是不可变的: 任何方法都无法改变值类型的值.数字.布尔值.…
javascript 中的类型 js 是一门弱语言,各式各样的错误多种多样,特别是确定返回值有问题的时候,你会用什么来进行表示错误? 我一般有三个选择: null '' error {} 第一个选择 null 如果结果是空,倒底是什么意思,是正确还是错误,你在写代码时会很疑惑. 第二个选择 '' 空字符串,结果更糟,因为1. 可能弄混了返回值的类型,2. 想提供一些有用的信息也带不回来. 第三个选择 error ,可以,但是你需要去判断类型 第四个选择 {} 空对象,跟1. 2 没有什么区别 都…
JavaScript中Float类型保留两位小数 核心方法: num:要操作的数字     size:要保留的位数 parseFloat(num).toFixed(size); 实现代码如下:var  amount = parseFloat(document.getElementById("controlID").innerText).toFixed(2);…
一.类型与值 1.0 javaScript 七种内置类型: 空值(null) 未定义(undefined) 布尔值( boolean) 数字(number) 字符串(string) 对象(object) 符号(symbol,ES6 中新增) 1.1 typeof 运算符查看值的类型 typeof 对null的处理显示"object",并非显示"null",typeof null === "object"; // true这是javaScript语…
什么都不说,先上总结的图~   Selectors API(选择符API) querySelector()方法 接收一个css选择符,返回与该模式匹配的第一个元素,如果没有找到匹配的元素,返回null. //取得 body 元素 var body = document.querySelector("body"); //取得 ID 为"myDiv"的元素 var myDiv = document.querySelector("#myDiv"); /…
将javaScript中其他任意类型的值转换为对应Boolean类型的值. 一  将number类型的值转换为Boolean类型 数值为0: var myBoolean = new Boolean(0); alert(myBoolean);//false 数值为非0: var myBoolean = new Boolean(1); alert(myBoolean);//true 二   将字符串类型的转换为Boolean 将空字符串转换为Boolean类型的值 var myBoolean = n…
<JavaScript启示录>这本书中提出:JavaScript中,对象为“王”(JavaScript里的几乎所有东西都是对象或者用起来像对象). 飞燕草对JavaScript最深刻的理解--也是这么久以来最有收获的一个认识:JavaScript的值有两种--原始值和对象(原始值的集合)组成.再直接一点,全部都可以理解为对象,原始值虽然不是对象,但是原始值拥有等效包装器对象,按照这么说的话,在JavaScript中真的可以说是对象为“王”. 一:原始值(或简单值) 1.原始值有5种:5(num…
JavaScript中的变量类型有哪些? 值类型:字符串(string).数值(number).布尔值(boolean).null.undefined 引用类型:对象(Object).数组(Array).函数(Function) 值类型和引用类型的区别 值类型: 占用空间固定,保存在栈中(当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会逐个放入这块栈内存里,随着方法的执行结束,这个方法的内存栈也将自然销毁了.因此,所有在方法中定义的变量都是放在栈内存中的:栈中存储的是基…
在javascript中,if语句括号中的表达式返回值可以是任何类型,即:if(a)中的a可以是boolean.number.string.object.function.undefined中的任何类型,这便会涉及到不同类型和boolean类型的转换问题. 如果a不是boolean类型,那么js解释器会自动调用Boolean()函数对a进行类型转换,Boolean()的返回值是一个boolean类型的变量. string类型 空字符串,即“”或‘’转换为false 任何非空字符串转换为true…
原创文章,欢迎转载.转载请注明:关东升的博客 继承会发生在子类和父类之间,是一系列类的继承关系. 例如:Person是类层次结构中的根类,Student是Person的直接子类,Worker是Person的直接子类. 这个继承关系类的具体实现代码如下: class Person { var name: String var age: Int func description() -> String { return "\(name) 年龄是: \(age)" } convenie…
原创文章,欢迎转载.转载请注明:关东升的博客 继承会发生在子类和父类之间,是一系列类的继承关系. 比如:Person是类层次结构中的根类.Student是Person的直接子类.Worker是Person的直接子类. 这个继承关系类的详细实现代码例如以下: class Person { var name: String var age: Int func description() -> String { return "\(name) 年龄是: \(age)" } conven…
前言:Array 类型是 JavaScript 中除了 Object 类型以外最常用的类型. 一.创建数组 JavaScript 中的数组与其他语言中的数组有着很大的区别.例如Java.PHP等语言中的数组都是一组有序的数据,而 JS 中的数组可以包含多种类型的数据. 创建方式: 1. Array 构造函数定义数组 ---------- var 数组名 = new Array(): var colors = new Array(20); //直接传递数组数量,length 值为20,即创建一个包…
字符串类型 字符串介绍 这是程序里面使用最为广泛的一-种类型.在JavaScript里面, 可以使用单引号,也可以使用双引号: 字符串这种数据类型非常霸道,它和其他数据类型相加都会被转换后才为字符串类型:所以如果我们要让一个非字符串的变量转换为字符串的话,只需要和一个空字符串相加就可以了.当然,转换字符串事实上我们也有相应的函数来转换,最常见的就是toString()函数. null和undefined并不能通过toString0函数来转换为相应的字符串 .还有一个知识点,就是toString(…
JavaScript 中 if() 圆括号中的表达式将被看做布尔值来处理.这时就涉及到一些转化的问题. 1.特殊值undefined和null变成false. 2.数字0和NaN变成false. 3.空字符串变成false. 4.所有其他值都变成true. 由于上面的关系.假设我们判断浏览器是否支持一个对象,就可以用if语句了. 如果判断浏览器是否支持 样式表编辑. function initStyle(){ if(!document.styleSheets) return;//如果不支持这个属…
以下内容来自维基百科,关于静态类型检查和动态类型检查的解释: 静态类型检查:基于程序的源代码来验证类型安全的过程: 动态类型检查:在程序运行期间验证类型安全的过程: Java使用静态类型检查在编译期间分析程序,确保没有类型错误.基本的思想是不要让类型错误在运行期间发生. 以下代码是一个例子,理解了他,你会更好的理解Java静态类型检查是如何工作的. 代码示例 假定我们有如下类,A和B,B继承A. class A { A me() { return this; } public void doA(…
除了Object,Array类型应该是ECMAScript中最常用的类型了. ECMAScript的数组虽然也是数据的有序列表,但还是与其他语言中的数组有很大的区别.比如ECMAScript数组每一项都可以保存任何类型的数据,而且数组的大小可以随着数据的添加自动的增长以容纳新数据. 1.创建数组 创建数组的基本方式有两种: //第一种,使用Array构造函数 var arr1 = new Array(); //创建空数组 var arr2 = new Array(20); //创建数量为20的数…
对于任何JavaScript程序,当程序开始运行时,JavaScript解释器都会初始化一个全局对象以供程序使用.这个JavaScript自身提供的全局对象的功能包括: 1.全局对象拥有一些常用的属性值.比如undefined.Infinity以及NaN.2.全局对象拥有一些常用的属性对象.比如Math.JSON和Number对象均为该全局对象的属性.3.全局对象提供一些全局函数供调用.比如isNaN().isFinite().parseInt()和eval()等.4.全局对象提供一些全局构造器…
ES5中的近类结构 ES5以及之前的版本,没有类的概念,但是聪明的JavaScript开发者,为了实现面向对象,创建了特殊的近类结构. ES5中创建类的方法:新建一个构造函数,定义一个方法并且赋值给构造函数的原型. 'use strict'; //新建构造函数,默认大写字母开头 function Person(name) { this.name = name; } //定义一个方法并且赋值给构造函数的原型 Person.prototype.sayName = function () { retu…
Array类型是ECMAScript中最常用的类型之一,ECMAScript中的数组与其他多数语言中的数组有着相当大的区别.ECMAScript数组的每一项可以保存任何类型的数据.这里总结了数组类型的大多数方法,方便以后查找使用. 一.创建数组的基本方式 创建数据的基本方式有两种: 1.使用Array构造函数 var colors=new Array();var colors=new Array(20); //创建length值为20的数组var colors=new Array("red&qu…
最常见的是使用 typeof 来判断数据类型 可以区分4种基本类型,即 “number”,”string”,”undefined”,”boolean”,第5种基本类型null类型返回值为object(历史兼容性问题导致) 判断对象类型时返回为object console.log(typeof 'hello') //string console.log(typeof('hello')) //string console.log(typeof 123) //number console.log(ty…
document.execCommand()方法处理Html数据时常用语法格式如下:document.execCommand(sCommand[,交互方式, 动态参数]) 其中:sCommand为指令参数(如下例中的”2D-Position”),交互方式参数如果是true的话将显示对话框,如果为false的话,则不显示对话框(下例中的”false”即表示不显示对话框),动态参数一般为一可用值或属性值(如下例中的”true”). document.execCommand(”2D-Position”…
通过试验,对图像处理有了进一步深入了解和认知,基于第一次的滤波的处理和这次灰度线性变换和直方图处理图像,知道了图像的成像原理,都是一个个的像素点,就是矩阵的值.以后可以利用MATLAB进行图像处理,运用数学知识,结合计算机知识运用在实际工作中.通过这两次作业的学习,收获很大的,之前一直觉得对于程序开发中只要会写代码就行,没有想到很多地方都是要用到数学知识,只是自己没有考虑到罢了. 正如你所看到的这段令人充满困惑与误解的代码导致了出人意料的结果.只有良好的声明习惯,也就是下一章节我们要提到的声明规…
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-…
function setName(obj){ obj.name = 'Niccholas'; console.log(obj.name); //Niccholas obj = new Object(); obj.name = 'Greg'; console.log(obj.name); //Greg } var person = new Object(); setName(person); console.log(person.name); //Niccholas 函数内部重写obj时,这个变量…
Flow: JavaScript静态类型检查工具 Flow是Facebook出品的,针对JavaScript的静态类型检查工具.其代码托管在github之上,并遵守BSD开源协议. 关于Flow 它可以帮助我们捕获JavaScript开发中的常见错误,而不需要额外地修改你原有的代码,比如静态类型转换,空值引用等问题. 同时,Flow为JavaScript添加了静态类型的语法标识,这样开发者便可以明确代码中的类型,让其自动地被Flow所维护. 目前,Flow具有以下两特性: 1. Flow的类型检…
javascript中有5中数据类型(也称为基本数据类型):Undefined.Null.Boolean.Number和String,还有一种复杂数据类型——object,object本质是由一组键值对组成的. typeof操作符:用于检测给定变量的数据类型,对一个值试用typeof操作符可能返回下列某个字符串: ♦ “undefined”——表示值未定义: ♦ “boolean”——表示值是布尔值 :♦ “string”——表示值是字符: ♦ “number”——表示值是数值:  ♦ “obj…