var arr = [1,2,3,45,5,"abc",undefined];
console.log(arr[0]); //打印第0位
console.log(arr.length); //打印数组的长度
var arr = {
属性名1 : "字符串", //注意用“,”分隔
属性名2 : 数字,
属性名3 : underfined,
属性名4 : false,
}
console.log(arr.属性名);
面向过程:机械的想法,逻辑化思维,按步骤进行(c语言)
面向对象(java c++)
js即面向过程也面向对象
注:也可以用脚本语言与非脚本语言进行分类
用于区别不同的数据类型
用console.log(typeof(变量名));则直接打印变量的数据类型
注:typeof函数中var a = {}; var a= []; var = null;的返回值是object
也可以用typeof 变量名表示typeof函数
注:布尔值true转为数字为1,false为0;null为0,undefined不能转化,变为为NaN,字母也不能转化,变为NaN
parseInt(变量);
parseFloat(变量); 转化数字为浮点数
注:当其出现非数字位时,只取非数字位前的数字(小数点除外)
String(变量); 转化为字符串(任意值)
Boolean(变量); 转化为布尔值(true和false)
注:undefined、null、NaN、""(空串)、0、false 转化的布尔值为false,其余变量均为true
toString();
isNaN(变量); //判断变量是不是NaN,返回布尔值
注:把变量用Number();函数进行转换,将转化结果与NaN进行比较
“++”,“–”,“+”,“-” (最后两个是一元正负运算符)
注:
“*”,“/”,“%”
注:把两侧用Number();进行转换,并对转换结果进行计算
“&&”,“||”
注:把两侧变量用Boolean();进行转换,并对转换结果进行运算,但返回的值却是变量的值
“>=”,“<=”
注:有数字则用Number();函数转化后进行比较 ;字符串则是用ASCII进行比较,且可以连续比较
eg:2 > 1 > 3(返回值为false);3 > 2 > 1(返回值为true)
“”,“!=”
注:undefined == null 他们两个不等于其他值
“=”,“!==”是不发生类型转换的绝对不等于
注:NaN != NaN ; NaN !== NaN
未定义的变量如果出现在函数中,只有typeof();函数有返回值不报错,且这种情况下返回值为undefined
变量.toFixed(数字);
其用法为,将变量的小数点后“数字”位作为标准,余下部分四舍五入
var num = 123.45678;
var demo = num.toFixed(3);
var demo == 123.457;
function 函数名(){
函数内容;
}
函数名(); //调用函数
var 变量名 = function 函数名() {
函数内容;
}
变量名(); //调用函数,当前情况下函数名失去作用
var 变量名 = function () {
函数内容;
}
变量名();
函数的括号里可以直接输入变量名(多个变量名间用“,”隔开),在调用函数时直接在括号里对应变量的位置上输入在调用该函数时,该该变量需要的值
eg:
function sum(a,b){ //a、b为形参
document .write(a + b);
}
sum(1,2); //1、2为实参;打印3
函数名也是一个变量,只不过不需要var来定义,和变量命名方式相同,执行函数,执行的是函数内容,打印函数名则出现“function 函数名(){函数内容;}”
命名时用小驼峰原则(第一个单词首字母小写,后面的单词首字母大写)
实参会在函数中形成一个名为arguments的数列,数列的内容是实参的值,就算形参的数量小于实参,也会把所有实参都储存在arguments里
系统内也可以对形参进行赋值,arguments数列默认出现在第一行,也可在后面对其再进行赋值;在函数中最后对形参值定义的表达式决定了形参的值
注:如果实参数量小于形参,则arguments在缺少实参的位置将失去意义,不再与形参对应
eg:
function sum(a,b){
document .write(a); //输出值为1
a = 2;
document .write(a); //输出值为2
arguments[0] = 3;
document .write(a); //输出值为3
}
sum(1,2);
function sum(a,b){
document .write(b); //输出值为undefined
b = 2;
document .write(b); //输出值为2
document .write(arguments[1]); //输出值为undefined
arguments[1] = 3;
document .write(b); //输出值为3
}
sum(1);
return; 用于结束函数,如果不写,默认出现在函数的最后
return 后接数字或变量,会把该值赋予等于函数的变量
eg:
function sum(a,b){
document .write(a);
document .write(b);
return (a + b) ;
}
var num = sum(1,2);
sum(1,2); //打印1和2
document .write(num); //打印3
函数里面可以调用函数外面的变量,函数外面不能调用里面的变量
(注:两个函数相互嵌套,里面的函数也可以调用外面函数,以及外面函数外面的变量;两个平行关系的函数不能相互调用变量)
通过函数中调用函数本身,并设置结束递归的条件,从而使得其从最后一次自我调用往上逐层计算
eg(计算n的阶乘):
var n = parseInt(window.prompt('input'));
function mul(n){
if(n == 1 || n == 0){
return 1;
}
return n * mul(n-1);
}
代码简单但运算复杂度高
通篇扫描不执行用于确定是否有代码书写错误后进行预编译
eg:
var a = 123;
console.log(a); //输出值为undefined,并不报错
console.log(a); //报错
函数声明整体提升
变量 声明提升
imply global 暗示全局变量:即任何变量,如果变量未经声明就赋值,此变量就为全局对象所有
eg:
a = 123;
var a = b = 123;
var a = 123; //定义本行时,等同于定义下一行
window.a = 123;
window{ //与上一行等价
a : 123;
}
预编译四步:(
function fn(a){
var b = function () {};
var c = 1;
function d() {};
}
fn(1);
```)
1. 创建AO对象(Activation Object即执行期上下文)
AO{
}
2. 找形参变量和变量声明,将变量和形参名作为AO属性名,值为undefined
AO{
a : undefined,
b : undefined,
c : undefined,
}
3. 将实参值和形参统一
AO{
a : 1,
b : undefined,
c : undefined,
}
4. 在函数体里找函数声明,值赋予函数体
AO{
a : 1,
b : undefined,
c : undefined,
d : function d() {},
}
后面的步骤会对前面的步骤进行覆盖