我可以给javascript对象变量分配一个字符串吗?
对于有经验的开发人员来说,这似乎是一个简单的问题,但我在堆栈溢出中没有找到答案 如果我像这样声明一个变量,我可以给javascript对象变量分配一个字符串吗?,javascript,Javascript,对于有经验的开发人员来说,这似乎是一个简单的问题,但我在堆栈溢出中没有找到答案 如果我像这样声明一个变量,var name={} 我想现在我的名字是一个物体 我可以给这个变量名分配一个字符串吗,比如name=“Foo” 这样行吗 如果这起作用,有什么缺点吗 (我知道我可以将名称声明为var name=“”;但我记得在javascript中,任何东西都是对象(包括字符串,所以字符串也是对象))。正如yBrodsky提到的,您可以在javascript中这样做,因为JS变量没有类型化 您可以使用ty
var name={}代码>
我想现在我的名字是一个物体
我可以给这个变量名分配一个字符串吗,比如name=“Foo”代码>
这样行吗
如果这起作用,有什么缺点吗
(我知道我可以将名称声明为var name=“”;
但我记得在javascript中,任何东西都是对象(包括字符串,所以字符串也是对象))。正如yBrodsky提到的,您可以在javascript中这样做,因为JS变量没有类型化
您可以使用typeof
运算符检查变量的类型
msg = "hello";<br>
typeof msg ;
// returns "string"
msg = { a:"b"};<br>
typeof msg;
// returns "object"
msg=“你好”
味精类型;
//返回“字符串”
msg={a:“b”}
味精类型;
//返回“对象”
正如yBrodsky所提到的,您可以在javascript中这样做,因为JS变量不是类型化的
您可以使用typeof
运算符检查变量的类型
msg = "hello";<br>
typeof msg ;
// returns "string"
msg = { a:"b"};<br>
typeof msg;
// returns "object"
msg=“你好”
味精类型;
//返回“字符串”
msg={a:“b”}
味精类型;
//返回“对象”
Javascript是一种动态类型语言。变量本身不包含任何数据类型,它的值位于定义其类型的变量内
变量名称={};//将导致命名为“对象”类型
name=“”;//将导致名称为“字符串”类型
名称=[];//将导致名称为“对象”类型
在Javascript中,一切都不是对象。有两种东西是原始人和土著人
这些类型称为原语:null、未定义、number、string、boolean、symbol。
当我们执行typeof原语时,它不会返回对象(typeof null返回对象除外)
本机:String()、Number()、Boolean()、Array()、Object()、Function()、RegExp()、Date()、Error()、Symbol()。
当我们对本地人进行typeof时,它将返回一个对象
使用新关键字创建本机文件:
var hey=新字符串(“rajat”)
new将始终返回一个对象。Javascript是一种动态类型化语言。变量本身不包含任何数据类型,它的值位于定义其类型的变量内
变量名称={};//将导致命名为“对象”类型
name=“”;//将导致名称为“字符串”类型
名称=[];//将导致名称为“对象”类型
在Javascript中,一切都不是对象。有两种东西是原始人和土著人
这些类型称为基元:null、未定义、number、string、boolean、symbol。
当我们执行typeof原语时,它不会返回对象(typeof null返回对象除外)
本机:String()、Number()、Boolean()、Array()、Object()、Function()、RegExp()、Date()、Error()、Symbol()。
当我们对本地人进行typeof时,它将返回一个对象
使用新关键字创建本机文件:
var hey=新字符串(“rajat”)
new将始终返回一个对象。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+“”//相同,但仍然是1,但不再是数字。现在它是一个字符串
- 您可以随时通过
typeof()
函数检查您使用的类型,但在某些情况下typeof(new Array())//is object
关于动态键入,您需要了解很多细微差别。如此之多,微软决定开发TypeScript——一个JavaScript的类型化超集,它的发明是为了让JS开发者的生活更轻松。它可以做JS可以做的任何事情,加上严格类型语言的一些特性,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+“”//相同,但仍然是1,但不再是数字。现在它是一个字符串
- 您可以随时通过
typeof()
函数检查您使用的类型,但在某些情况下typeof(new Array())//is object
关于动态键入,您需要了解很多细微差别。如此之多,微软决定开发TypeScript——一个JavaScript的类型化超集,它的发明是为了让JS开发者的生活更轻松。它可以做JS可以做的任何事情,加上严格类型化语言的一些特性你可以做到这一点,因为在JS中变量不是类型化的,比如在Java中。但是,如果您知道变量是字符串,那么首先为什么要这样做呢?Google的JavaScript对象提供了以下文档:也可以尝试在StackOverflow之外的其他地方查找,资源非常丰富!您可以创建这样的示例name={};console.log(名称);name=“string”;console.log(名称)代码>@yBrodsky正在寻找ES4?无论如何,运行时类型效率很低。更好的编译时类型和结构。(以数组表示)@您的文档中哪一行提到了我问题的答案?我想如果我的问题不在stackoverflow中,我可以在这里问,对吗?所以,更多的开发人员可以看到它。你可以这样做,因为在Js中变量不是类型化的,比如在Java中。但是,如果您知道变量是字符串,那么首先为什么要这样做呢