一、是是非非:我在想为什么不直接用ture或false来表示,而是要搞这些鬼。
!0--false取反--true;
!!0--false双重取反--false;
!1--true取反--false;
!!1--双重取反--true;
!-1--true取反--false;
!!-1--true双重取反--true。
二、void(0)表示不作任何操作,等同于undefined
标识符 undefined 并不能真正反映 “未定义”, 因为undefined 并不是JavaScript 保留词。JavaScript 提供了 void 运算符,该运算符会对指定的表达式求值,并返回受信的 undefined:
三、创建对象
直接创建
person=new Object();
person.firstname="Bill";
person.lastname="Gates";
person.age=56;
person.eyecolor="blue";
替代语法(使用对象 literals,json采用这种方式)
person={firstname:"John",lastname:"Doe",age:50,eyecolor:"blue"};
对象构造器(就是函数吧)
function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
}
四、jscookie: https://github.com/ScottHamper/Cookies#cookiessetkey-value--options
五、localStorage:https://www.cnblogs.com/st-leslie/p/5617130.html
六、变量声明:var x=5,y=7,z={};
七、对象声明方式:https://blog.csdn.net/qq_32279193/article/details/78532045
八、json声明方式:https://www.cnblogs.com/le220/p/7726354.html
九、函数声明方式:https://www.cnblogs.com/xiaohuochai/p/5702813.html
十、return测试:其中return不能写到函数外
function fn()
{
var x=5,y=7,z={};
return false || y;
}
alert(fn());
输出y
function fn()
{
var x=5,y=7,z={};
return x || y;
}
alert(fn());
输出x
function fn()
{
var x=1,y=7,z={};
return x && y;
}
输出7
function fn()
{
var x=0,y=7,z={};
return x && y;
}
输出0
function fn()
{
var x=5,y=7,z={};
return x,y;
}
alert(fn());
输出7
function fn()
{
var x=5,y=7,z={};
return y,x;
}
alert(fn());
输出5
十一、js函数前加分号和感叹号是就为了省一个字符,或者好看一些:https://www.cnblogs.com/mq0036/p/4605255.html
十二、有些js文件最前面加分号的原因:从语法上来开,Javascript中分号表示语句结束,在开头加上,可能是为了压缩的时候和别的方法分割一下,表示一个新的语句开始。为了避免压缩时前一个脚本没有写最后一个分号而导致压缩后脚本不能使用,所以要在开始加一个分号。所以,如果在一个单独的JS文件中,开头的分号是没有任何意义的,可以删掉。
;(function(){
// ...
})();
十三、JS真是神奇,参数里面可以执行函数,返回里面可以执行函数,参数里面最后一个参数决定是否执行函数体
if (1 || 0 ? alert("a") : alert("b"), true) {
alert("d");
}
说明:其中参数里面第一个参数是三元运算,||是或运算,只要有一个是真则执行输出a; 同理如果是&&则要全部是真才会输出a。第二个参数决定是否执行函数体。
十四、在js中打印对象数据。为了达到目的,程序猿也是真的辛苦。为了输出对象数据看一下两种解决方案:
writeObj : function (obj){
var description = "";
for(var i in obj){
var property=obj[i];
description+=i+" = "+property+"\n";
}
alert(description);
}
搞了一个函数,可是也只能打印一些简单的对象,数据一复杂就无解了。下面这个老兄的方法才是真解了,输出结果一目了然:
将对象转为json格式再输出:JSON.stringify(this.state)