Js学习简记(一)
2018-08-14 本文已影响0人
奋斗的小土豆
前言:本想学习Taro那一套然后开发小程序的,当环境配置好之后开发的时候,发现很多的都依赖于JavaScript所以只能暂停搁置Taro的文章学习JS,这纯属学习笔记,大神忽略~
- 内部应用javascript
<script type="text/javascript">
function sayHello() {
alert("Hello World")
}
</script>
注意:1.包含在<script>中的代码将会从上而下一次解释,保存在自己的环境中,在解释器对<\/script>元素内部的所有代码解释完以前,
页面的其余内容不会被展示
2.使用<script>嵌入javaScript代码时,不要在任何代码中出现"</script>字符串,否则浏览器加载将会产生错误"
- 外部应用javascript
<script type="text/javascript" src="../js/test.js"></script>
注意:带有src属性<script>元素不应该在<script>和</script>标签之间包含额外的javascript代码,
如果包含了嵌入的代码则只会下载并执行外部脚本文件,嵌入的代码会被忽略。
src可以加载外部域的js文件(外网服务器文件,和img相似)
变量
javascript类型是松散的,所谓的松散类型就是可以用来保存任何类型的数据。
换句话说就是每个变量仅仅是一个用于保存值得占位符而已,定义变量时,
使用var操作符+变量名。
注意:
-
不建议修改变量所保存值的类型,但是改变变量值得类型是有效的(var name="zhangsan",name=123)
-
使用var定义的变量将成为定义该变量的局部变量。也就是说如果在函数定义了一个变量。那么这个变量在函数退出时就会被销毁。
如:
function test() {
var name = "james"
}
test();
alert(name);//错误的
注意:变量name是在函数中使用var定义的。当函数被调用时,就会创建变量并为其赋值。而在此之后这个变量会立马被销毁。
因此会引起上一句代码的错误。不过可以像下面这样,省略var操作符,创建一个全局变量。
function test() {
name = "james"
}
test();
alert(name);// 弹出james
解释:省略了var操作符,因而message变成了全局变量。这样只要调用过一次test()函数,这个变量就定义了,
就可以在函数外部任何地方进行访到了。
- 虽然省略var操作符可以定义全局变量,但是不推荐这种做法,因为在局部作用域定义的全局变量很难维护,
而且有意的忽略了var操作符,也会由于相应变量不会马上就有定义而导致不必要的混乱。
给未经声明的标量赋值在严格模式下,会抛出ReferenceError错误。
技巧:可以用一条语句定义多个变量,把每个变量用逗号分开即可(初不初始化均可),如 var name,age = 18, sex;
数据类型
javascript有五种简单数据类型和一种复杂数据类型
- Undefined ------使用var声明变量但是没有对其赋值,就是undefined,默认就是undefined所以不需要显示的为一个变量设置值为undefined,字面值undefined主要是用于比较。未初始化和未使用typeof操作符都会返回undefined值,这两种变量从技术角度有本质区别,但是实际上无论哪种变量都不可能执行真正的操作。虽然变量未初始化会自动赋予undefined,但是显示的初始化变量依然是明智的选择,这样就可以区分type的undefined就知道未声明还是未初始化。
- Null ------- 只有一个值,这个值就是null,从逻辑角度,null值表示一个空对象指针,而这也是typeof(null) 返回object的原因。如果定义的变量准备在将来保存对象,那么最好将变量初始化的null,这样只要检查null值就知道相应的变量是否保存了一个对象的引用。可以区分null和undefined,实际上undefined派生自null值,所以 null==undefined。
- Boolean ------- 布尔值 只有 true 和 false 两个值
- Number ------- 数值 整数或者浮点数 如果计算结果超出数值范围则会自动转成Infinity(无穷),判断一个函数是不是有穷的可以使用isFinite()函数。如果是有穷的则返回true.NaN是一个特殊的数值,这个数值用于表示本来要返回数值的操作数未返回的情况(这样不会报错),比如任何数值除以0都会返回NaN. isNaN()函数,判断一个值是不是数值。任何不是数值的值都会返回true,是数值的则会返回false。有三个函数可以把非数值转成数值类型。Number() 可以用于任何数据类型,parseInt(),parseFloat() 这连个函数把字符串转成数值。
- String -------字符串 可以使用""或者'',每个值都有一个toString()方法。如果值是null toString()返回null,如果是undefined toString() 返回undefined。
- Object -------一组数据和功能的集合。对象可以通过执行new操作符后跟要创建的对象类型名称来创建。而创建创建Object类型的实例并为其添加属性或者方法,就可以创建自定义对象。如:var o = new Object();如果不给构造函数传递参数,则可以省略后面的圆括号。即:var o = new Object; Object和java中一样是基础类型。Object的所有属性和方法存在于子类中。
- constructor:保存着用于创建当前对象的函数。
- hasOwnProperty(properName):用于检查给定的属性在当前对象实例中是否存在。作为参数的属性名必须是字符串。
- isPrototypeOf(object):用于检查传入的对象是否是另一个对象的原型。
- propertyIsEnumerable(propertyName):用于检查给定的属性能否使用 for-in语句来枚举。
- toLocaleString():返回对象的字符串表示,该字符串与执行环境地区对应。
- toString():返回对象的字符串表示。
- valueOf():返回对象的字符串,数值或者boolean值,通常与toString()返回值相同。
-
typeof操作符
由于js是松散类型,所以提供了typeof检测给定的数据类型,和上面类型定义相同。多了一种函数 function 如果该类型是函数。注意:typeof是一个操作符而不是函数。typeof(null)返回object,因为null被认为是一个空对象引用。函数也是一种特殊属性。因此通过typeof操作符来区分函数和对象很有必要。
总结
以上主要记录了对js的引用方式,变量定义,基本数据类型的定义以及类型检测。仅做记录~