js函数参数数据类型有哪些?

JavaScript012

js函数参数数据类型有哪些?,第1张

您好,非常荣幸能在此回答您的问题。以下是我对此问题的部分见解,若有错误,欢迎指出。用typeof(var) 来返回一个数据类型

返回的可能值有

'undefined' - 如果变量是 Undefined 类型的

'boolean' - 如果变量是 Boolean 类型的

'number' - 如果变量是 Number 类型的

'string' - 如果变量是 String 类型的

'object' - 如果变量是一种引用类型或 Null 类型的

if(typeof(123)=='number')alert('this is a number')

以此类推非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!

如何判断js中的数据类型:typeof、instanceof、 constructor、 prototype方法比较

如何判断js中的类型呢,先举几个例子:

var a = "iamstring."

var b = 222

var c= [1,2,3]

var d = new Date()

var e =

function(){alert(111)}

var f =

function(){this.name="22"}

最常见的判断方法:typeof

alert(typeof a)

------------>string

alert(typeof b)

------------>number

alert(typeof c)

------------>object

alert(typeof d)

------------>object

alert(typeof e)

------------>function

alert(typeof f)

------------>function

其中typeof返回的类型都是字符串形式,需注意,例如:

alert(typeof a == "string")

------------->true

alert(typeof a == String)

--------------->false

另外typeof

可以判断function的类型;在判断除Object类型的对象时比较方便。

判断已知对象类型的方法: instanceof

alert(c instanceof Array)

--------------->true

alert(d instanceof

Date)

alert(f instanceof Function)

------------>true

alert(f instanceof function)

------------>false

注意:instanceof

后面一定要是对象类型,并且大小写不能错,该方法适合一些条件选择或分支。

根据对象的constructor判断:

constructor

alert(c.constructor ===

Array) ---------->true

alert(d.constructor === Date)

----------->true

alert(e.constructor ===

Function) ------->true

注意: constructor 在类继承时会出错

eg,

function A(){}

function B(){}

A.prototype = new B()//A继承自B

var aObj = new A()

alert(aobj.constructor === B) ----------->

true

alert(aobj.constructor === A) ----------->

false

而instanceof方法不会出现该问题,对象直接继承和间接继承的都会报true:

alert(aobj instanceof B) ---------------->

true

alert(aobj instanceof B) ---------------->

true

言归正传,解决construtor的问题通常是让对象的constructor手动指向自己:

aobj.constructor = A

//将自己的类赋值给对象的constructor属性

alert(aobj.constructor === A) ----------->

true

alert(aobj.constructor === B) ----------->

false//基类不会报true了

通用但很繁琐的方法: prototype

alert(Object.prototype.toString.call(a) === ‘[object String]’)

------->true

alert(Object.prototype.toString.call(b) === ‘[object Number]’)

------->true

alert(Object.prototype.toString.call(c) === ‘[object Array]’)

------->true

alert(Object.prototype.toString.call(d) === ‘[object Date]’)

------->true

alert(Object.prototype.toString.call(e) === ‘[object Function]’)

------->true

alert(Object.prototype.toString.call(f) === ‘[object Function]’)

------->true

大小写不能写错,比较麻烦,但胜在通用。

通常情况下用typeof

大家好,我是IT修真院成都分院第5期的学员,一枚正直纯洁善良的web程序员

一.背景介绍:

在“单机”模式下,只需要使用其本身所建立的变量即可。显然,在如今的前端环境,一个稍微正式点的项目都不太可能是这个情况,页面的跨越、服务器后台进行数据请求等,都需要一个或数个传参的方法。

二.知识剖析

几种常见的传参方式

1,localStorage和sessionStorage

将数据存储在localStorage中,如果不使用removeItem()或者delete删除,或者用户未清楚浏览器缓存,数据会一直保留在磁盘上,一般它的大小有5M的限制。另外,要访问同一个localStorage对象,页面必须来自同一个域名(子域名无效),使用同一个协议,在同一个端口上

而数据存储在sessionStorage中,该数据只保持到浏览器关闭,因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储

他们都属于storage类型,因此拥有storage类型的方法

保存数据:setItem(key,value)

读取数据:getItem(key)

删除单个数据:removeItem(key)

删除所有数据:clear()

得到某个索引的key:key(index)

2,cookie传递参数

HTTP Cookie,通常直接叫做cookie,Cookie是浏览器访问服务器后,服务器传给浏览器的一段数据。

目前有些 Cookie 是临时的,有些则是持续的。临时的 Cookie 只在浏览器上保存一段规定的时间,一旦超过规定的时间,该 Cookie 就会被系统清除.

3,URL传递参数

一个完整的网页地址大致分成protocol、host、path、search、hash五部分,其中search和hash(?号以后的数据)是我们可以在程序中作为参数部分进行传递。在网页初始化的时候读取search和hash的数据然后进行一系列操作,而search(?name=张三&type=admin)也常用作后台的请求参数。

4,ajax

AJAX 是一种用于创建快速动态网页的技术。 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

三.常见问题

在什么情况适合使用以上介绍的传递方式?

四.解决方案

在传递少量不涉及隐私的参数时可以使用直接url或者Form的GET方式传递,大量数据可以用POST传递

五.编码实战

$(function() {

//获取url中传来的数据

var openId = getParamValue("openId")

//当传递过来的数据中包含有中文数据的时候,需要在添加编码设置,

//也就可以写成这样:var name = decodeURI(getParamValue("userName"))这样写的话

//就可以正确获得中文字符。

})

//分解url获得数据部分

function getUrlParams() {

var search = window.location.search

// 写入数据字典

var tmparray = search.substr(1, search.length).split("&")

var paramsArray = new Array

if (tmparray != null) {

for (var i = 0i <tmparray.lengthi++) {

var reg = /[=|^==]/// 用=进行拆分,但不包括==

var set1 = tmparray[i].replace(reg, '&')

var tmpStr2 = set1.split('&')

var array = new Array

array[tmpStr2[0]] = tmpStr2[1]

paramsArray.push(array)

}

}

// 将参数数组进行返回

return paramsArray

}

// 根据参数名称获取参数值

function getParamValue(name) {

var paramsArray = getUrlParams()

if (paramsArray != null) {

for (var i = 0i <paramsArray.lengthi++) {

for (var j in paramsArray[i]) {

if (j == name) {

return paramsArray[i][j]

}

}

}

}

return null

}

AJAX

function orderCancel(orderId, commant){

var flag = false

$.ajax({

type: "POST",

url: "../order/orderCancel.action", //orderModifyStatus

data: {"orderId":orderId,"commant":commant},

dataType:"json",

success: function(data){  //参数正确执行

var member = eval("("+data+")")//包数据解析为json 格式

if(member.success=="true"){  //请求成功执行

flag = true

}else if(member.success=="false") {  //请求失败执行

alert(member.info)

}

},

error: function(json){  //参数错误执行

alert("订单取消异常,请刷新后重试...")

}

})

hidediv()

return flag

}

五.更多讨论

问题1:本地stroage和会话storage?

回答1:一个是永久存储本地,一个是网页关闭就删除

六.参考资料

参考一: url方法

参考二: ajax方法

技能树.IT修真院

“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~

戳我注册 ~