1、变量
a、第一个字母必须是下划线、字母、 符号b、剩下的字母可以是下划线、 、任意字母或者数字
2、原始值和引用值
原始值:存储在stack中的简单数据段,他们的值是直接存储在变量访问的位置
引用值:存储在heap中的对象,存储在变量处的值是一个指针,指向存储对象的内存处
原始类型(primitive type) Undefined、Null、Boolean、Number、String使用typeof来判断是哪种原始类型
window.onload=function(){
var ss=’test’;
console.log(typeof ss); //string
console.log(typeof null); //object
var tt;
console.log(typeof tt); //undefined 只是声明没有定义
}
八进制和十六进制的表示
window.onload=function(){
console.log(013); //11 八进制表示了
console.log(0x16); // 十六进制表示了
}
3、转换
3.1转换成字符串
任意类型的对象都能转换成字符串
window.onload=function(){
var boo=false;
console.log(boo.toString());
// console.log(null.toString()); //不能将null转换为字符串
var iNum=10; //演示带基转换
console.log(iNum.toString(2)); //1010
console.log(iNum.toString(8)); //12
console.log(iNum.toString(16)); //a
}
3.2转换成数字 parseInt() 和parseFloat()
window.onload=function(){
console.log(parseInt(“1234blue”)); //1234
console.log(parseInt(“0xa”)); //10
console.log(parseInt(22.5)); //22
console.log(parseInt(“blue”)); //Nan
}
3.3强制类型转换
有如下3种转换
1、Boolean(value) 把指定的值转换成boolean 除了0、null、“”剩下都会为false
2、Number(value)把指定的值转换为number
parseInt() 和parseFloat()对4.5.6会转换为4和4.5Number则会转换为NaN
3、String(value)把给定的值转换为string
4、引用类型
4.1object类(同java一样个中类的祖先)
属性:ConStructor–创建对象函数的引用()
Prototype–对该对象的对象原型的引用
方法:HasOwnProperty(property)判断对象是否有某个特定的属性
IsPrototype(object)判断对象是否为另一个对象的原型
PropertyIsEnumerable(property)判断给定的属性是否可以用for…in语句
ToString()返回对象的原始字符串表示
Valueof()返回最适合该对象的原始值
4.2String类
除了继承来自父类的属性方法之外String还有如下的一些属性和方法
属性:length
方法:charAt(int index) 返回的是该位置上的字符
charCodeAt(int index) 返回的是该位置上的字符的编码
contact(string ss) 用于把一个或多个字符串链接到String对象是上,保持原始的 String对象不变
indexOf(string); 指定的子串在另一个字符串的位置,从头开始检索
lastIndexOf(String) 指定的子串在另一个字符串的位置,从尾开始检索
localeCompare(String) 对该字符串值进行排序
返回-1 这个对象按照字母排序排在参数中的字符串之前
返回0 这个对象等于参数中的字符串
返回1 这个对象按照字母排序排在参数中的字符串之后
slice()和substring()返回的是裁剪以后的字符串但不会改变原来的字符串
1、slice(int begin,int end)或者 substring(int begin,int end) 返回相同
2、slice(int begin)或者 substring(int begin) 返回相同
事实上这两个方式并不完全,在参数为负数时处理方式就不同
转换为大小写
window.onload=function(){
var ss=new String(“helloword”);
console.log(ss.charAt(1)); //e
console.log(ss.charCodeAt(1)); //101返回的是e的字符编码
var yuan=new String(“hello”);
var xin=yuan.concat(” world”);
console.log(yuan); //String {0: “h”, 1: “e”, 2: “l”, 3: “l”, 4: “o”, length: 5, [[PrimitiveValue]]: “hello”}
console.log(xin); //hello world
var ss2=new String(“hello world”);
console.log(ss2.indexOf(“o”)); //4
console.log(ss2.lastIndexOf(“o”)); //7
var ss2=new String(“yellow”);
console.log(ss2.localeCompare(“za”)) ; //-1
console.log(ss2.localeCompare(“aa”)); //1
var ss3=new String(“hello wrrld”);
console.log(ss3.slice(-3)); //rld
console.log(ss3.substring(-3)); //hello wrrld也就是说会忽略掉
console.log(ss3.slice(3,-4)); //lo w包含头但是不包含尾
console.log(ss3.substring(3,-4)); //hel substring(3,0)也就是substring(0,3)
}
4.3instanceof
window.onload=function(){
var ss=new String(“sasa”);
console.log(ss instanceof String); //true
}
5、运算符
5.1一元运算符
delete 强制解除对它的引用,将其设置为undefined,但是这个运算符不能删除开发者未定义的属性和方法
window.onload=function(){
var o=new Object;
o.name=”Nicholas”; //Nicholas
console.log(o.name);
delete o.name;
console.log(o.name); //undefined
}
void 对任何值都返回undefined
++和–
+和-号 变为正数或者负数 =+ 会隐式的调用parseInt方法
5.2位运算符
not 用~来表示 本质就是对数字求负,然后-1
window.onload=function(){
var ii=-25;
console.log(~ii); //24
}
XOR 用^来表示 位运算符
window.onload=function(){
console.log(25^3); //26 按位进行异或
}
左移运算 <<
window.onload=function(){
console.log(2<<5); //64 相当于给2乘以2的5次方
}
有符号右移运算
window.onload=function(){
console.log(64>>5); //2 有符号右移
console.log(64>>>5) //2无符号右移
console.log(-64>>5); //-2 有符号右移
console.log(-64>>>5) //非常大的一个数字
}
加减乘除运算符
条件运算符
console.log(64?5:4); //5
赋值运算符 *= /= %= += -= <<= >>= >>>=
逗号运算符 一般用在定义变量上边
var n1,n2;
6、函数
function sum(i,j){
return i+j;
}
在函数代码中,使用特殊对象arguments,开发者无需指出参数(是指使用的时候穿过来的参数)名,就能访问他们(第一个参数位于位置0,第二个参数位于位置1)
函数的嵌套,
function isload(x,y){
var result=squre(x)+squre(y);
function squre(z){
return z*z;
}
return result;
} //但是内部函数squre对isload外部不可见
console.log(isload(3,4));
递归函数
输出一个数的阶乘
function isload(x){
if(x==1){
return 1
}
return x*isload(x-1);
}
console.log(isload(5)); //120
计算3到n(n>3)之间所有的整数之和
function isload(x){
if(x==3){
return 3
}
return x+isload(x-1);
}
console.log(isload(7)); //120
在函数调用时,传入实际参数的值保存在函数内部一个名为arduments的数组中。
但是在调用时,javaScript并不对参数的个数进行检查,无论实际参数比形式参数的个数是多是少,所有的实际参数都被保存在arguments中,没有被实际参数赋值的形式参数会被赋值为undefined
回依次输出
function isload(x){
for(var i=0;i
function isload(x){
if(x==1){
return 1;
}
return x*arguments.callee(x-1);
}
console.log(isload(5));
函数不仅是一种语法,还可以做数据使用。作为数据使用
function isload(x){
if(x==1){
return 1;
}
return x*arguments.callee(x-1);
}
var abc=isload;
console.log(typeof abc); //function
现在的isload就是一个数据,被赋值给abc的数据
内置函数其实是绑定在Global对象上的
1、escape()函数
escape()函数用于对指定字符串进行编码,并返回编码后的字符串(Unicode编码)
2、unescape()函数
和上面的函数的功能刚好相反,将编了码的unicode码还原为字符串
1、encodeURI()函数用于将文本编码为有效的同一资源标识符(URI)URI的概念比URL要更广泛
console.log(encodeURI("http://www.baidu.com/baidu?word=注册会计是"));
http://www.baidu.com/baidu?word=%E6%B3%A8%E5%86%8C%E4%BC%9A%E8%AE%A1%E6%98%AF
2、decodeURI()函数 对已经编码的URI进行解码,
var dd=encodeURI("http://www.baidu.com/baidu?word=注册会计是");
console.log(dd);
console.log(decodeURI(dd));//http://www.baidu.com/baidu?word=注册会计是
1、encodeURICompontent()函数和上述函数功能差不多,但是这个函数会把URI的一部分也当作参数(协议、服务器名称)所以会转义各个部分的分隔符而上述的函数不会转义这些符号
2、decodeURICompontent()
var dd=encodeURIComponent("http://www.baidu.com/baidu?word=注册会计是");
console.log(dd);
console.log(decodeURIComponent(dd));//http://www.baidu.com/baidu?word=注册会计是
1、parseInt()函数
console.log(parseInt('10110',2)); //将2进制字符串转化为十进制的数
console.log(parseInt('sio222')); //NaN
console.log(parseInt('222sss')); //222
console.log(parseFloat('3.6E2')); //360
console.log(parseFloat('3.4E-2')); //0.034
2、parseFloat()函数
1、isNaN()函数用于判定指定的值是否为NaN
console.log(isNaN(parseInt('67sahu'))); //false
1、eval()函数
7、闭包
该函数能使用函数外部定义的变量,JavaScript中所有的function都是一个闭包
注意:函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量!
闭包就是能够读取其他函数内部变量的函数
读取的方式就是通过返回值返回这个内部变量