在js中定义函数需要用到关键字function
function 函数名(形参1,形参2,形参3){函数体代码}
function func1(){ console.log('hello world') } func1() //调用 加括调用 跟python是一样的
function func2(a, b){ console.log(a, b) } func2(1,2) //调用函数(传参) func2(1, 2, 3, 4, 5, 6, 7, 8, 9) //多了没关系 只要对应的数据 1 2 func(1) //少了也没关系 1 undefined
function func2(a, b){ console.log(arguments) //能够获取函数接受的索引参数 console.log(a, b) }
function func2(a, b){ if(arguments.length<2){ console.log('传少了') }else if (arguments.length>2){ console.log('传多了') }else{ console.log('正常执行') } }
function index(){ return 666 }
function index(){ return 666,777,888,999 } res = index(); 999 res 999 // 只能拿到最后一个
function index(){ return [666,777,888,999] } res = index() (4) [666, 777, 888, 999] res (4) [666, 777, 888, 999]
function(){ console.log('哈哈') } var res = function(){ console.loh('哈哈') }
箭头左边的是形参 右边是返回值 var func1 = v => v; 上面等价于下面这句 var func1 = function(v){ return v }
var func2 = (arg1,arg2) => arg1+arg2 等价于 var func2 = function(arg1,arg2){ return arg1+arg2 }
在javaScript函数内部声明的变量(使用var)是局部变量,索引只能在函数内部访问它(该变量的作用域是函数内部)。只要函数运行完毕,本地变量就会被删除。
在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。
1.javaScript变量的生命周期从它们被声明的时候开始 2.局部变量会在函数运行以后被删除 3.全局变量会在页面关闭后被删除
首先在函数内部查找变量,找不到则到外部函数查找,逐步找到最外层。与python作用域关系查找一模一样!
var city = "BeiJing"; function f() { var city = "ShangHai"; function inner(){ var city = "ShenZhen"; console.log(city); } inner(); } f(); shenZhen
var city = "BeiJing"; function Bar() { console.log(city); } function f() { var city = "ShangHai"; return Bar; } var ret = f(); ret(); Beijing
var city = "BeiJing"; function f(){ var city = "ShangHai"; function inner(){ console.log(city); } return inner; } var ret = f(); ret(); ShangHai
JavaScript中的所有事物都是对象:字符串、数字、数组、日期,等等。在JavaScript中,对象是拥有属性和方法的数据。 我们在学习基本数据类型的时候已经带大家了解了,JavaScript中的Number对象、String对象、Array对象等。 注意var s1 = "abc"和var s2 = new String("abc")的区别:typeof s1 --> string而 typeof s2 --> Object
你可以看成是我们python中的字典 但是js中的自定义对象要比python里面的字典操作起来更加方便
var d1 = {'name':'jason','age':18}
var d = {'name':'jason','age':18} typeof d 'object' d['name'] 'jason' d.name 'jason' d.age 18
for(let i in d){ console.log(i,d[i]) } name jason age 18
第二种创建自定义对象的方式 需要使用关键字 new
var d2 = new Object() d2.name = 'jason' d2 {name: 'jason'} d2['age'] = 18 d2 {name: 'jason', age: 18}
let d3 = new Date()
Sun Jan 23 2022 16:15:29 GMT+0800 (中国标准时间)
d3.toLocaleString()
'2022/1/23 下午4:15:29'
let d4 = new Date('2200/11/11 11:11:11')
d4.toLocaleString()
'2200/11/11 上午11:11:11'
let d5 = new Date(1111,11,11,11,11,11)
d5.toLocaleString() // 月份从0开始0-11月
'1111/12/11 上午11:11:11'
var d = new Date(); //getDate() 获取日 //getDay () 获取星期 //getMonth () 获取月(0-11) //getFullYear () 获取完整年份 //getYear () 获取年 //getHours () 获取小时 //getMinutes () 获取分钟 //getSeconds () 获取秒 //getMilliseconds () 获取毫秒 //getTime () 返回累计毫秒数(从1970/1/1午夜)
在python中序列化反序列化 dumps 序列化 loads 反序列化 在js中也有序列化与反序列化 JSON.stringify() JSON.parse()
let d7 = {'name':'jason','age':18} 序列化 let res666 = JSON.stringify(d7) res666 '{"name":"jason","age":18}' 反序列化 JSON.parse(res666) {name: 'jason', age: 18}
在python中如果需要使用正则 需要借助re模块 在js中需要你创建正则对象
new代表创建对象
let regl = new RegExp('^[a-zA-Z][a-zA-z0-9]{5,11}')
let reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,11}/ 匹配内容 reg1.test('woshidashuaibi') res2.test('woshidashuaibi')
let sss = 'nish asoswo shi' sss.match(/s/) // 拿到一个就停止了
sss.match(/s/g) // 全局模式 (4) ['s', 's', 's', 's']
let reg3 = /^[a-zA-Z][a-zA-Z0-9]{5,11}/g reg3.test('egondsb') // 全局模式有一个lastindex属性 true reg3.test('egondsb') false reg3.test('egondsb') true reg3.test('egondsb') false reg3.test('egondsb') true reg3.lastIndex 7 reg3.test('egondsb') false reg3.lastIndex 0
let reg4 = /^[a-zA-Z][a-zA-Z0-9]{5,11}/ reg4.test() reg4.test() //什么都不传 默认的是undefined true reg4.rest() true 验证是否什么都不传为undefined reg4.test(undefined) true
abs(x) 返回数的绝对值。 exp(x) 返回 e 的指数。 floor(x) 对数进行下舍入。 log(x) 返回数的自然对数(底为e)。 max(x,y) 返回 x 和 y 中的最高值。 min(x,y) 返回 x 和 y 中的最低值。 pow(x,y) 返回 x 的 y 次幂。 random() 返回 0 ~ 1 之间的随机数。 round(x) 把数四舍五入为最接近的整数。 sin(x) 返回数的正弦。 sqrt(x) 返回数的平方根。 tan(x) 返回角的正切。 Math