javascript动态声明变量(javaScript变量和内置对象)

1、变量 a、变量提升 javascript引擎的工作方式,先解析代码,获取所有被声明的变量,然后再一行一行的运行, 造成的结果就是所有的变量的声明语句,都会被提升到代码的头部,(这种读取变量的机制就是变量提升) console.log(num) //undefined var num = 1 上面的代码在Javascript就是下面这种代码机构 var num; console.log(num) num = 1; 注意: 只对var 声明的有效 b、变量作用域 console.log(num) var num = 1 //undefined console.log(num) num = 1 //error var声明的变量为局部变量 局部变量仅在其所在的函数范围内生效,变量生效的范围被称为变量作用域 而变量如果不适用var来声明,则表示变量在整个文件内生效,(全局变量) c、一等公民 在其他语言中,函数都作为一个二等公民存在,只能用语言的关键字声明一个函数然后调用它, 如果需要把函数作为参数传递给另一个函数,或是赋值给一个本地变量,又或是作为返回值, 就需要指针、代理等特殊的方式周折一番 但是 在javascript世界中函数却是一等公民,他不仅拥有一切传统函数的使用方式(声明和调用)、 而且可以做到像简单值一样赋值,传参、返回,这样的函数也称之为第一级函数或者一等公民 var a = function f() { console.log("wocao") } function f1(a) { a(); } f1(a) d、函数名提升 javascript引擎将函数名视同变量名,所以采用function命令声明函数时, 整个函数会像变量声明一样,被提升到代码头部 注意: 只有function声明的函数会发生函数名提升,二如果通过赋值语句写的函数则不会 e、**函数参数的默认值 function func(num){ num = num || 1; num默认值为1 return num } func() //1 这种写法会对函数参数num进行一次布尔运算,只有为true时,才会返回num 避免了因为忘写参数而导致的函数调用失败问题 **** 但是出了undefined以外、0、空字符、null等的布尔值也是false, 2、内存 a、值传递和地址传递 原始数据类型(数值、字符串、布尔值)的内容传递方式是值传递 传递是具体的数值 而复合数据类型(数组、对象、其他函数)的内容传递是地址传递 传递的是具体的内存地址 注意: 值传递不会对原内容产生改变,而地址传递能够改变原数据 b、函数的同名参数 如果函数有同名的参数,则取最后出现的那个参数值 function f(num,num) { console.log(num) } f(1,2)//2 如果函数没有提供第二个参数num的取值就变成了undefined function f2(num,num) { console.log(num) } f2(1)//undefined 注意: 尽量不要写同名参数,而且定义函数的时候写了几个参数, 在调用的时候尽量保证和定义时一致 c、**arguments对象 由于javascript允许函数有不定数目的参数,所以我们需要一种机制来在函数体内部读取所有参数 arguments对象包含了函数,【运行时】的所有参数 arguments[0]就是函数的第一个参数arguments[1]就是第二个,以此类推,(这个对象只有在【函数体内部】才可以使用) var func =function(one) { console.log(arguments[0]) console.log(arguments[1]) console.log(arguments[2]) } func(1,2,3) 尽管在函数被声明的时候并没有多个参数,但是在函数运行的时候有三个参数, 因此arguments对象便能够获取到这三个参数 arguments对象出了可以读取参数,还可以进行赋值 arguments[2] = 2; arguments[3] =3; console.log(arguments[2] arguments[3]) d、eval函数 eval函数可计算某个字符串,并执行其中的javascript代码, (eval函数的作用是,将字符串当做语句执行) eval(string) 该方法只接受【原始字符串】作为参数,如果string参数不是原始字符串 那么该方法将不作任何改变的返回,因此请不要为eval函数传递string对象来作为参数 eval('var num=100') console.log(num) 注意: 如果eval函数在使用的过程中发生了非法调用或者传入参数出错,则会抛出异常 e、instanceof类型检测(数组是一种特殊的对象) 用来检测是否对属于某个数据类型(仅对于复合数据类型) console.log(arr instanceof Object) 3、Math对象属性 Math对象是javascript的内置对象,提供一系列数学常数和数学方法, 该对象不是构造函数,所以不能生成实例,所有的属性和方法都必须在Math对象本身调用 a、Math对象的属性表示只读的数学常数 Math.E 常数e Math.LN2 2的自然对数 Math.LN10 10的自然对数 Math.LOG2E 以2为底的e的对数 Math.LOG10E 以10为底的e的自然对数 Math.PI 常数pi Math.SQRT1_2 0.5的平方根 Math.SQRT2 2的平方根 b、Math对象的方法 Math.round():四舍五入 当参数为正数时,正常的四舍五入标准,小于0.5取0,大于0.5取1 当参数为负数时,向下取整标准,小于-0.5取-0,大于0.5取-1 Math.round(0.1) //0 Math.round(0.5) //1 Math.round(-1.1) //-1 Math.round(-1.6) //-2 Math.floor()返回小于参数值的最大整数(向下取整) Math.floor(3.9) //3 Math.floor(-3.2) //-4 Math.ceil()返回大于参数值的最小整数(向上取整) Math.ceil(3.2) //4 Math.ceil(-3.9) //-3 Math.abs()返回参数的绝对值 Math.abs(1) //1 Math.abs(-1) //1 Math.max()返回参数的最大值 Math.max(1,5,11) Math.min()返回参数的最小值 Math.min(1,5,11) Math.pow()返回第一个参数为底数,第二个参数为幂的指数值 Math.pow(2,2) //4 Math.pow(2,3) //8 Math.sqrt()返回参数的值的平方根,如果是负值为NaN Math.sqrt(4) //2 Math.sqrt(-4) //NaN Math.log()返回以e为底的自然对数值 Math.log(Math.E) //1 Math.log(10) Math.exp()返回常数e的参数次方 Math.exp(1) Math.exp(3) 6、Math随机生成 Math.random() 返回0-1之间的一个伪随机数,可能等于0但是一定小于1 Math.random().toFixed(2) //保留小数点后两位 // 随机生成验证码 function getRandomStr(length) { var characterDic = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789-_"; var finalStr = ""; for (var i =0;i<length;i ){ var index = (Math.random()*64).toFixed(0) var tempStr = characterDic[index] finalStr =tempStr } return finalStr; } var str = getRandomStr(4); console.log(str) 7、Date对象 是javascript提供的日期和时间的操作接口 在javascript内部,所有日期和时间都存储为一个整数 这个整数是当前时间距离1970年1月1日00:00:00的毫秒数,正负的范围为基准时间前后各一亿天 a、Date()函数 Date函数可以被Date对象直接调用,返回一个当前日期和时间的字符串 Date(); // Date(2021,1,1) 无论有没有参数,直接调用Date总是返回当前时间 b、Date(日期字符串|日期参数)构造函数 Date对象是一个构造函数,对它使用new命令,会返回一个Date对象的实例 【如果不加参数,生成的就是代表当前时间的对象】 var today = new Date() 【如果添加一个日期字符串作为参数,返回字符串所对应的时间】 语法:var date2 = new Date("january 7,1996") 【添加日期参数,返回字符串所对应的时间】 语法: var date2 = new Date(year,month,day,hours,minutes,seconds,ms) 使用日期参数时,年月日必须写,其他默认和可以省略,省略为0 new Date(2013,2) new Date(2013,0,15) 注意: 月份是从零开始 0-11 c、日期的运算 javascript内部存储日期类型的时候等于距离1970年1月1日零点的毫秒数, 而之前显示给用户的时候是转换为字符串显示的 两个日期对象进行减法运算,返回的就是他们间隔的毫秒数 两个日期对象进行加法运算,返回的就是连接后的两个字符串 d、日期对象的get方法 getTime() 返回实例对象距离1970年1月1日00:00:00对应的毫秒数(valueOf()方法) getDate() 返回实例对象对应每个月的几号(1开始) getDay() 返回星期几,星期日为0星期一为1 getYear() 返回距离1900的年数 getFullYear() 返回四位数的月份 getMonth() 返回月份(0-11) getHours() 返回小时(0-23) getMilliseconds()返回毫秒(0-999) getMinutes() 返回分钟(0-59) getSeconds() 返回秒(0-59),今天小编就来聊一聊关于javascript动态声明变量?接下来我们就一起去研究一下吧!

javascript动态声明变量(javaScript变量和内置对象)

javascript动态声明变量

1、变量 a、变量提升 javascript引擎的工作方式,先解析代码,获取所有被声明的变量,然后再一行一行的运行, 造成的结果就是所有的变量的声明语句,都会被提升到代码的头部,(这种读取变量的机制就是变量提升) console.log(num) //undefined var num = 1 上面的代码在Javascript就是下面这种代码机构 var num; console.log(num) num = 1; 注意: 只对var 声明的有效 b、变量作用域 console.log(num) var num = 1 //undefined console.log(num) num = 1 //error var声明的变量为局部变量 局部变量仅在其所在的函数范围内生效,变量生效的范围被称为变量作用域 而变量如果不适用var来声明,则表示变量在整个文件内生效,(全局变量) c、一等公民 在其他语言中,函数都作为一个二等公民存在,只能用语言的关键字声明一个函数然后调用它, 如果需要把函数作为参数传递给另一个函数,或是赋值给一个本地变量,又或是作为返回值, 就需要指针、代理等特殊的方式周折一番 但是 在javascript世界中函数却是一等公民,他不仅拥有一切传统函数的使用方式(声明和调用)、 而且可以做到像简单值一样赋值,传参、返回,这样的函数也称之为第一级函数或者一等公民 var a = function f() { console.log("wocao") } function f1(a) { a(); } f1(a) d、函数名提升 javascript引擎将函数名视同变量名,所以采用function命令声明函数时, 整个函数会像变量声明一样,被提升到代码头部 注意: 只有function声明的函数会发生函数名提升,二如果通过赋值语句写的函数则不会 e、**函数参数的默认值 function func(num){ num = num || 1; num默认值为1 return num } func() //1 这种写法会对函数参数num进行一次布尔运算,只有为true时,才会返回num。 避免了因为忘写参数而导致的函数调用失败问题 **** 但是出了undefined以外、0、空字符、null等的布尔值也是false, 2、内存 a、值传递和地址传递 原始数据类型(数值、字符串、布尔值)的内容传递方式是值传递 传递是具体的数值 而复合数据类型(数组、对象、其他函数)的内容传递是地址传递 传递的是具体的内存地址 注意: 值传递不会对原内容产生改变,而地址传递能够改变原数据 b、函数的同名参数 如果函数有同名的参数,则取最后出现的那个参数值 function f(num,num) { console.log(num) } f(1,2)//2 如果函数没有提供第二个参数num的取值就变成了undefined function f2(num,num) { console.log(num) } f2(1)//undefined 注意: 尽量不要写同名参数,而且定义函数的时候写了几个参数, 在调用的时候尽量保证和定义时一致 c、**arguments对象 由于javascript允许函数有不定数目的参数,所以我们需要一种机制来在函数体内部读取所有参数 arguments对象包含了函数,【运行时】的所有参数 arguments[0]就是函数的第一个参数arguments[1]就是第二个,以此类推,(这个对象只有在【函数体内部】才可以使用) var func =function(one) { console.log(arguments[0]) console.log(arguments[1]) console.log(arguments[2]) } func(1,2,3) 尽管在函数被声明的时候并没有多个参数,但是在函数运行的时候有三个参数, 因此arguments对象便能够获取到这三个参数 arguments对象出了可以读取参数,还可以进行赋值 arguments[2] = 2; arguments[3] =3; console.log(arguments[2] arguments[3]) d、eval函数 eval函数可计算某个字符串,并执行其中的javascript代码, (eval函数的作用是,将字符串当做语句执行) eval(string) 该方法只接受【原始字符串】作为参数,如果string参数不是原始字符串 那么该方法将不作任何改变的返回,因此请不要为eval函数传递string对象来作为参数 eval('var num=100') console.log(num) 注意: 如果eval函数在使用的过程中发生了非法调用或者传入参数出错,则会抛出异常 e、instanceof类型检测(数组是一种特殊的对象) 用来检测是否对属于某个数据类型(仅对于复合数据类型) console.log(arr instanceof Object) 3、Math对象属性 Math对象是javascript的内置对象,提供一系列数学常数和数学方法, 该对象不是构造函数,所以不能生成实例,所有的属性和方法都必须在Math对象本身调用 a、Math对象的属性表示只读的数学常数 Math.E 常数e Math.LN2 2的自然对数 Math.LN10 10的自然对数 Math.LOG2E 以2为底的e的对数 Math.LOG10E 以10为底的e的自然对数 Math.PI 常数pi Math.SQRT1_2 0.5的平方根 Math.SQRT2 2的平方根 b、Math对象的方法 Math.round():四舍五入 当参数为正数时,正常的四舍五入标准,小于0.5取0,大于0.5取1 当参数为负数时,向下取整标准,小于-0.5取-0,大于0.5取-1 Math.round(0.1) //0 Math.round(0.5) //1 Math.round(-1.1) //-1 Math.round(-1.6) //-2 Math.floor()返回小于参数值的最大整数(向下取整) Math.floor(3.9) //3 Math.floor(-3.2) //-4 Math.ceil()返回大于参数值的最小整数(向上取整) Math.ceil(3.2) //4 Math.ceil(-3.9) //-3 Math.abs()返回参数的绝对值 Math.abs(1) //1 Math.abs(-1) //1 Math.max()返回参数的最大值 Math.max(1,5,11) Math.min()返回参数的最小值 Math.min(1,5,11) Math.pow()返回第一个参数为底数,第二个参数为幂的指数值 Math.pow(2,2) //4 Math.pow(2,3) //8 Math.sqrt()返回参数的值的平方根,如果是负值为NaN Math.sqrt(4) //2 Math.sqrt(-4) //NaN Math.log()返回以e为底的自然对数值 Math.log(Math.E) //1 Math.log(10) Math.exp()返回常数e的参数次方 Math.exp(1) Math.exp(3) 6、Math随机生成 Math.random() 返回0-1之间的一个伪随机数,可能等于0但是一定小于1 Math.random().toFixed(2) //保留小数点后两位 // 随机生成验证码 function getRandomStr(length) { var characterDic = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789-_"; var finalStr = ""; for (var i =0;i<length;i ){ var index = (Math.random()*64).toFixed(0) var tempStr = characterDic[index] finalStr =tempStr } return finalStr; } var str = getRandomStr(4); console.log(str) 7、Date对象 是javascript提供的日期和时间的操作接口 在javascript内部,所有日期和时间都存储为一个整数 这个整数是当前时间距离1970年1月1日00:00:00的毫秒数,正负的范围为基准时间前后各一亿天 a、Date()函数 Date函数可以被Date对象直接调用,返回一个当前日期和时间的字符串 Date(); // Date(2021,1,1) 无论有没有参数,直接调用Date总是返回当前时间 b、Date(日期字符串|日期参数)构造函数 Date对象是一个构造函数,对它使用new命令,会返回一个Date对象的实例 【如果不加参数,生成的就是代表当前时间的对象】 var today = new Date() 【如果添加一个日期字符串作为参数,返回字符串所对应的时间】 语法:var date2 = new Date("january 7,1996") 【添加日期参数,返回字符串所对应的时间】 语法: var date2 = new Date(year,month,day,hours,minutes,seconds,ms) 使用日期参数时,年月日必须写,其他默认和可以省略,省略为0 new Date(2013,2) new Date(2013,0,15) 注意: 月份是从零开始 0-11 c、日期的运算 javascript内部存储日期类型的时候等于距离1970年1月1日零点的毫秒数, 而之前显示给用户的时候是转换为字符串显示的 两个日期对象进行减法运算,返回的就是他们间隔的毫秒数 两个日期对象进行加法运算,返回的就是连接后的两个字符串 d、日期对象的get方法 getTime() 返回实例对象距离1970年1月1日00:00:00对应的毫秒数(valueOf()方法) getDate() 返回实例对象对应每个月的几号(1开始) getDay() 返回星期几,星期日为0星期一为1 getYear() 返回距离1900的年数 getFullYear() 返回四位数的月份 getMonth() 返回月份(0-11) getHours() 返回小时(0-23) getMilliseconds()返回毫秒(0-999) getMinutes() 返回分钟(0-59) getSeconds() 返回秒(0-59)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页