对于有经验的开发人员来说,这似乎是一个简单的问题,但我没有在堆栈溢出中找到答案。
如果我声明一个这样的变量,var name = {};
我可以为此变量名称指定字符串,例如name = "Foo";
(我知道我可以将名称声明为var name = "";
但是我记得在javascript中,任何东西都是对象(包括字符串,所以字符串也是一个对象))。
答案 0 :(得分:1)
JavaScript是动态类型语言。简而言之,这意味着JS引擎会自动决定使用哪种类型,具体取决于您分配给它的值的类型。这也意味着您可以随时更改变量的类型。
var name = {} //name is object
name = "" // name is now a string
name = function (a) { return a + a } //it's now a function
最大的问题是它传播了错误:
1 + "" // still 1 but is not a number anymore. It's a string now
typeof()
功能查看您使用的类型,但在某些情况下它无法帮助您typeof( new Array() ) // is object
您需要了解有关动态类型的许多细微差别。微软决定开发TypeScript,这是一种类型化的JavaScript超集,旨在简化JS开发人员的生活。它可以做任何事情JS可以加上来自严格类型语言的几个功能
答案 1 :(得分:0)
正如yBrodsky所提到的,你可以在javascript中做到这一点,因为JS变量没有输入
您可以使用typeof
运算符来检查变量的类型
msg = "hello";<br>
typeof msg ;
// returns "string"
msg = { a:"b"};<br>
typeof msg;
// returns "object"
答案 2 :(得分:-2)
Javascript是一种动态类型语言。变量本身不包含任何数据类型,它定义了变量中定义其类型的值。
var name = {}; //将导致名称为&#34; object&#34;类型
name =&#34;&#34 ;; //将导致名称为&#34; string&#34;类型
name = []; //将导致名称为&#34; object&#34;型
在Javascript中,一切都不是对象。原始和原生有两件事。
这些类型称为基元:null,undefined,number,string,boolean,symbol。
当我们执行typeof基元时,它不会返回一个对象(除了typeof null返回对象)。
Natives:String(),Number(),Boolean(),Array(),Object(),Function(),RegExp(),Date(),Error(),Symbol()。 当我们输入本机类型时,它将返回一个对象。
使用新关键字创建Native:左
var hey = new String(&#34; rajat&#34;);
新的总会返回一个对象。