本文总结js中常用的知识,有些几乎用不到,或者属于设计缺陷,但是又必须知道,这些是我开发中总结的,如果有不正确的地方,请指出。
个人代码习惯分享:命名尽量语义化但又比较特殊,这样会避免命名冲突,即使全局局部变量会属于不同域也不要使用同名,长一点没关系,不太会英文怎么办?拼音!
一.变量
1.)在非严格模式下,全局变量不用var也可以直接用,但是这样并不好,会造成歧义,阅读会困难。所以正规的写法是提前声明。
2.)有一个概念叫变量提升,在函数内部,所有的变量都会被提升到函数体上部声明。
function upvar(){ console.log(x); var x = 0; } upvar();//打印undefined
变量声明在打印之后,即使在严格模式下也不会报错,原因是js机制把变量声明提前到函数体第一行,但是未赋值,所以上面的函数相当于:
function upvar(){ var x; console.log(x); x = 0; } upvar();//打印undefined
那么如果全局变量跟函数内局部变量同名呢?结果也是一样的。函数优先扫描内部函数。
var a = 2; function samenameA(){ console.log(a) var a = 3; } samenameA();//打印undefined
变量使用必须提前声明,使用前必须提前赋值。所以在我看来除非脑抽筋,不然不会写出这种代码。属于记住概念即可。
3.)this指向
在全局范围下,this指向window,也就是说可以使用this.变量调用全局变量,this.函数调用全局函数。
在对象内,指向当前对象。
在事件内,指向事件dom。
二.数据类型
1.)js有五中基本类型,一种引用类型
基本类型:String,Boolean,Number,undefind,null
引用类型:Object(Date,Array,Reg,Function)
基本包装类型:
单体内置对象:
基本类型是简单值,所见即所得,引用类型是复杂类型,其值是经过计算得到的。
2.)类型内置函数
String
待更...
时间: 2024-10-25 08:51:42