- javascript 没有命名空间(namespace),很难模块化,允许重新定义,后面定义的会覆盖前面,很难模块化加载
- nul 空 属于 object undefined 未定义 属于 数据类型
- 全局变量 对所有函数可见 所有函数可生成全局变量
- javascript的所有语句都是以分号结尾,没有则会自动加上
- NaN 是一个数字
NaN === Nan //false
NaN + 1 //NaN
复制代码
- 数组 属于 object
typeof 123 //number
typeof new Number("123"); //object
复制代码
-
<script>
同步加载 加载完毕后再加载剩余的HTML 当页面存在多个<script>
标签是,无法同时读取,加载完一个后在加载另一个 其他会停止加载 加载会立即运行 如果依赖的文件未加载会报错 所有 依赖小的先加载 依赖大的后加载
var a=b=0;
// b=0; var a=b
复制代码
- 变量提升
if(!o){
var o={};
}
复制代码
var o;
if(!o){
o={};
}
复制代码
for(var i){}
复制代码
var i;
for(i){}
复制代码
- 避免使用全局变量
区块block
{}
复制代码
- javascript是单线程 弱类型 异步
var object={
a:function(){
console.log(1);
}
}
object.a();
object['a']();
(object).a();
复制代码
- 值转化为布尔值
if(!!value){}
// 0,null,undefine,NaN 转为 false
复制代码
- 将字符串转为数字
function toString(strNumber){
return +strNumber;
}
toString("123"); //123
toString("abc"); //NaN
复制代码
- 并条件符
var value=1;
if(value){
console.log("do something")
}
value && console.log("do something");
复制代码
- || 如果第一个参数传入false,会传入第二个值
function User(name,age){
this.name=name || "kobe";
this.age=age || 18;
}
user1=new User();
console.log(user1.name);
user2=new User("james");
console.log(user2.name);
复制代码
var array=[1,2,3];
for(var i=0;i<array.length;i++){
console.log(array[i]);
}
复制代码
var array=[1,2,3],
i=0,
len=array.length;
for(i;i<len;i++){
console.log(array[i]);
}
复制代码
- 获取数组最后一位
var array=[1,2,3];
array.slice(-1);
复制代码
//函数声明式
function a(){}
//函数表达式
var a=function(){}
复制代码
- 全局变量 顶层对象的属性
全局作用域 与 函数作用域 全局变量 和 局部变量
单线程 单进程
回调函数