我可以将字符串分配给javascript对象变量吗?

时间:2017-07-26 20:05:49

标签: javascript

对于有经验的开发人员来说,这似乎是一个简单的问题,但我没有在堆栈溢出中找到答案。

如果我声明一个这样的变量,var name = {};

  1. 我想现在我的名字是一个对象?
  2. 我可以为此变量名称指定字符串,例如name = "Foo";

    1. 这会有用吗?
    2. 如果这项工作有任何缺点吗?
    3. (我知道我可以将名称声明为var name = "";但是我记得在javascript中,任何东西都是对象(包括字符串,所以字符串也是一个对象))。

3 个答案:

答案 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;);

新的总会返回一个对象。