? ? ? ?在大牛小徐子的帮助下,今天花了1小时的时间把js初步学习了一遍,当然只是摸了个门槛,只是想找点进入。
把笔记贴出来一下,做个学习笔记。
? ? ? ? js主要分3个领域:
? ? ? ? 1. js基础 2. dom基础 3. js 高级 ??http://www.jplusui.com/resources/javascript/studymethod.html
? ? ? ? 今天学习就是基础部分,入门级别
? ? ? ?一.数据类型
? ? ? ??所谓的数据类型,就是数据的格式,比如常见的有数字、文本。js内的数据类型有:
? ? ? ?(js对大小写敏感)
? ? ? ? ?1. Number 数字,比如 1, ?1.2 , ?.4?,?2e1,?0x34
? ? ? ? ? ??有2个数字是很特别的, 一个是 Infinity?? 表示无穷大 ??1 /0 == Infinity
? ? ? ? ? ??还有一个特别的是 NaN? 表示不是数字 ??当表达式无法计算时,返回 NaN ?比如?? 0 / 0 == NaN?
? ? ? ? ?2:? Boolean? 布尔型
? ? ? ? ? ??布尔型只有2个值 true false
? ? ? ? ?3. 字符串 String
? ? ? ? ? ?"a" 'a'??? 'a\n' ?字符里的\表示转义字符,js的 单引号和双引号一样,"'"? '"'??? 都是可以
? ? ? ??上面几个类型都是很直白的,叫基础类型。
? ? ? ? ?4. Array 数组? 相当于数学的数列
? ? ? ? ? ?5. Object 对象,任何类型都是对象
? ? ? ? ? ?6. Function 函数
? ? ? ? ? ?7. RegExp 正则类型
? ? ? ? ? ?8. Date 日期类型
? ? ? ? ?上面几个类型都是引用类型。
? ? ? ? ?9. Undefined 类型? 只有1个值: undefined
? ? ? ? ?10. Null 类型? 只有1个值:? null
?
? ? ?小测试:
? ? ? ? ? 说明下面的类型:
? ? ? ? ? ??3 ? ? ? ? ? ? ? ? ?Number ??注意 类型都是大写的
? ? ? ? ? ? null ? ? ? ? ? ? ? Null?
? ? ? ? ? ? '\
? ? ? ? ? ? ? ?' ? ? ? ? ? ? ? ? String ? ?木有错\后面有回车 ??\是转义, \加回车用于多行的
? ? ? ? ? ??/3/ ? ? ? ? ? ? ? ?RegExp?
?
? ? ? ? ? ?'false' ? ? ? ? ? ? String?
? ? ? ? ? ?String ? ? ? ? ? ?Function??类型本身是 Function
? ? ? ? ? ?[] ? ? ? ? ? ? ? ? ? Array?
? ? ? ? ? ?{c:4} ? ? ? ? ? ? Object?
? ? ? ? ? ? ? ? ? ? ? ?任何类型都是Object,{} 定义的不属于任何其它类型,只能是 Object。引用类型的变量创建 ? ? ? ? ? ? ? ? ? ? ? ?是通过new的。比如 new Array()? 可以创建一个数组,但内置类型都有快捷方式来创建,比如 ? ? ? ? ? ? ? ? ? ? ? ?[]? 也可以创建数组 。类似的有 ?new Array()?? -? [1,2,3] ;new RegExp()? - /aa/
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? new Object()? -? {key: value, key1: value1};new Function() - function(){}
?
?
? ? ? 二:? 表达式计算
? ? ? ? ? ? 1.?字符串在计算时(除了+)会先尝试转数字。
? ? ? ? ? ?? ? 若无法转化成功,则计算结果为NaN 。??
? ? ? ? ? ? ? ?字符串+运算时,每个变量转字符串。其它计算时(包括单目的+计算),每个变量转数字。
? ? ? ? ? ? ? ?字符串比较时,也是每个变量转字符串。
?
? ? ? ? ? ? 2. 其它类型转成数据
? ? ? ? ? ? ??需要四则计算的时候,比如 - * / 位运算. 这个在表单验证的时候很有效。比如用户输入的是字符串,
? ? ? ? ? ? ??这样才能计算: ?+'1' + +'3',不然计算结果是字符串的连接
? ? ???而每个类型转数字和转字符串的方式都是不同的。
?
? ? ? ? ? ? ? ?①.Number : 不需要转。
? ? ? ? ? ? ? ?②. Boolean: false -> 0 true -> 1
? ? ? ? ? ? ? ?③.String. 包含数字本身的字符串转数字,其它是NaN
?
? ? ? ? ? ? ? ?④.Function、Object、Array、RegExp 转数字都是 NaN
? ? ? ? ? ? ? ?⑤. Undefined 转数字是 NaN
? ? ? ? ? ? ? ?⑥. Function、Object、Array、RegExp 转数字都是 NaN
? ? ? ? ?? ? ? ⑦.null 转数字是 0
? ? ? ? ? ? ? ?一般,为了变量强制转数字,只需在前面加个+ 。所有变量转为数字都是调用了 其 valueOf()
? ? ? ? ? ? ??
?
? ? ? ? ? ? ?3.?所有类型转 字符串的方法:
? ? ? ? ? ? ? ? ??①.?Number String Boolean 都是直观的
? ? ? ? ? ? ? ?②.true -> "true"
? ? ? ? ? ? ? ?③.数组转字符串就是每个成员变字符串,?然后,连接
? ? ? ? ? ? ? ?④?function f(){} => "function f(){}"?.函数转为其源码
? ? ? ? ? ? ? ?⑤.?Object 转为 "[object Object]" ??后面的Object是构造函数的名字。
? ? ? ? ? ? ? ?⑥.?RegExp 和? Date 是特定的
? ? ? ? ? ? ? ?⑦.undefined 和 null 也是直观的
? ? ? ? ? ? ? ?所有变量转为字符串都是调用了 其 toString()? 方法
? ? ? ? ? ?4.所有类型转布尔类型
? ? ? ? ? ? ? ? ??①.?Number:?除了?0?和?NaN?是?false
? ? ? ? ? ? ? ②.?String?除了?''??是?false
? ? ? ? ? ? ? ③.?Boolean 除了 false 是false
? ? ? ? ? ? ? ④??undefined 和 null 是 false
? ? ? ? ? ? ? ⑤.?其它都为 true?
? ? ? ? ? ? ? ? ? ? ? ?所以,转为false的就这些: ??0 NaN '' false undefined null
?
? ? ? ? ? ? ? 5.js里 &&? 和 ||? 不返回true或false,而是返回其中的一个值
? ? ? ? ? ? ? ?当运算 A || B ,会先计算A的布尔值,如果true,返回 A。否则返回 B。 当运行A&&B ,也会返回A或B。因 ? ? ? ? ? ? ? ? ? ? 此 A&&B||C会先判断A,满足后判断B,AB有一个满足就返回,都不满足则得到C。
? ? ? ? ? ? ? ? ? ??http://www.jplusui.com/resources/javascript/basic.html
? ? ? ? ? ? ? ? ? ?undefined || 3 则返回 3
?
? ? ? ? ? ? ? ? 6.?typeof 运算
? ? ? ? ? ? ? ? ? ? ?typeof 'a' -> 'string' ? ?typeof undefined? ->? 'undefiend' ?
? ? ? ? ? ? ? ? ? ? ? ? ??typeof 返回的是小写的,返回的值是一个字符串,不是类型本身
? ? ? ? ? ? ? ? ? ? ?typeof null -> 'object'
?
? ? ? ? ? ? ? ? 7.其它的特殊操作符有:delete new void
? ? ? ? ? ? ? ? ? ? ?void 3 -> undefined ? 。void 总是返回 undefined
? ? ? ? ? ? ? ? ? 还有一个是? instanceof,比如 new String () instanceof String??
? ? ? ? ? ? ? ? ? ?判断变量是不是string这个类型,当然,只能在new的时候用,不是new出来的不能判断
? ? ? ? ? ? ? ? ?8. 其他
? ? ? ? ? ? ? ? ??[0,0][0,0]
?
? ? ? ? ? ? ? ? ? a = [0,0]
? ? ? ? ? ? ? ? ? a[0,0] ? ?a[0,0] = a[0]
? ? ? ? ? ? ? ? ??,?是运算符?逗号表示就是取最后的那个?? 例如?1,2,3,4?? 就是普通的表达式计算,返回最后一个
?
? ? ? ? ? ? ??表达式测验:
? ? ? ? ? ? ? ?1+4 ? ? ? ? ? ? ? 5
? ? ? ? ? ? ? ?1/0 ? ? ? ? ? ? ? ?Infinity
? ? ? ? ? ? ? ?-1-1-1 ? ? ? ? ? ?-3
? ? ? ? ? ? ? ?'1-1' ? ? ? ? ? ? ?'1-1' ??字符串需要加引号
? ? ? ? ? ? ? ?'1' + 1 ? ? ? ? ? ?‘11’
? ? ? ? ? ? ? ?'1' - 1 ? ? ? ? ? ? 0 ??
? ? ? ? ? ? ? ?'false' - 1 ? ? ? ? NaN ??'false' - 1 = NaN - 1 = NaN ?不是数字的字符串无法转数字, 返回NaN
? ? ? ? ? ? ? ? 1+ 2 + '3' + 4 + 5 ? ? ? ‘3345’
? ? ? ? ? ? ? ? -Infinity ? ? ? ? ? ? ? ? ? -Infinity ??负无穷大
? ? ? ? ? ? ? ??+'2'+1 ? ? ? ? ? ? ? ? ? ? ?3 ?'2' 前面的不是加,而是正,所以字符串先转数字,so结果是 2+1 = 3
? ? ? ? ? ? ? ? +'' ? ? ? ? ? ? ? ? ? ? ? ? ? NaN
? ? ? ? ? ? ? ??'59' >= '6' ? ? ? ? ? ? ? ? ?false
? ? ? ? ? ? ? ??'59' > 6 ? ? ? ? ? ? ? ? ? ? true ???先转数字 ?数组转数字: ?先转字符串,然后字符串对应转数字
? ? ? ? ? ? ? ? '' + [1,2,3] ? ? ? ? ? ? ? ?'1,2,3' ??数组转字符串就是每个成员变字符串, 然后,连接
? ? ? ? ? ? ? ??null == undefined ? ? ? ?true ??== 计算的时候,如果同类型,直接比较,否则转为类似的类型
? ? ? ? ? ? ? ??4 == '4' ? ? ? ? ? ? ? ? ? ? true
? ? ? ? ? ? ? ??null !== undefined ? ? ? true? ??有一种是 === 操作, 除了==还需类型相同
? ? ? ? ? ? ? ? ? ??null || undefined && 2 ? ?undefined
? ? ? ? ? ? ? ? ? ??0 / 0 || 1 / 0 || 2? ? ? ? ? ? ?Infinity
? ? ? ? ? ? ? ? ? ??1 ? 2 : 3 ? 4 : 5 ? 6 : 7 ? ?= 1 ?? (2)?? :???? (3 ? 4 : 5 ? 6 : 7) = 2 ? ? ??:? 就近原则
? ? ? ? ? ? ? ? ? ?((-1 + '2' - 3) / 4) && 5 || 6 ? 7 : 8 ? ? ? ? ? -3.75
? ? ? ? ? ? ? ? ? ? ? ? ? ? ???js的Number 相当于java的? double 类型,js没有整数类型,所有数字都是允许小数的
? ? ? ? ? ? ? ? ???typeof?? (0 / 0) ? ? ? ? ? ? ? ? 'number' ? ??NaN本身也是数字所以返回??? 'number'
? ? ? ? ? ? ? ? ? ?typeof typeof String ? ? ? ? 'string'
?
? ? ? ? ? ? ?四 ?语句。这个和java一样, 直接pass
? ? ? ? ? ?五.? 系统内置对象和函数??